{"version":3,"sources":["../src/login.ts"],"sourcesContent":["import { compare, hash } from \"bcrypt\";\nimport { sign, verify } from \"jsonwebtoken\";\n\n// import HajarError from \"../utils/hajarError\";\n\nexport async function login(\n  email: string,\n  password: string,\n  userType: string,\n  config: any\n) {\n  try {\n    const { models } = config.mongoose;\n    const user = await models.User.findOne({ email });\n    if (!user) {\n      throw new Error(\"User not found\");\n      //   throw new HajarError(\"User not found\", \"invalid-email-password\");\n    }\n\n    const validPassword = await compare(password, user.password);\n\n    if (!validPassword) {\n      throw new Error(\"User not found\");\n\n      //   throw new HajarError(\"Invalid password\", \"invalid-email-password\");\n    }\n\n    // Capitalize the first letter of userType\n    const modelType = userType.charAt(0).toUpperCase() + userType.slice(1);\n\n    // Check if the model exists in models on our mongoose instance\n    if (!models[modelType]) {\n      throw new Error(\"User not found\");\n\n      //   throw new HajarError(\"Invalid user type\", \"invalid_user_type\");\n    }\n\n    const additionalData = await models[modelType].findOne({ uid: user._id });\n    if (!additionalData) {\n      throw new Error(\"User not found\");\n\n      //   throw new HajarError(`${modelType} not found`, `${userType}_not_found`);\n    }\n\n    const token = sign({ _id: user._id }, config.accessToken, {\n      expiresIn: \"1h\"\n    });\n\n    const refreshToken = sign({ _id: user._id }, config.refreshToken, {\n      expiresIn: \"7d\"\n    });\n\n    return {\n      success: true,\n      user: { ...user.toObject() },\n      [userType]: { ...additionalData.toObject() },\n      token,\n      refreshToken\n    };\n  } catch (error) {\n    console.error(\"Login error:\", error);\n    throw error;\n  }\n}\n"],"mappings":";AAAA,SAAS,eAAqB;AAC9B,SAAS,YAAoB;AAI7B,eAAsB,MACpB,OACA,UACA,UACA,QACA;AACA,MAAI;AACF,UAAM,EAAE,OAAO,IAAI,OAAO;AAC1B,UAAM,OAAO,MAAM,OAAO,KAAK,QAAQ,EAAE,MAAM,CAAC;AAChD,QAAI,CAAC,MAAM;AACT,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAElC;AAEA,UAAM,gBAAgB,MAAM,QAAQ,UAAU,KAAK,QAAQ;AAE3D,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAGlC;AAGA,UAAM,YAAY,SAAS,OAAO,CAAC,EAAE,YAAY,IAAI,SAAS,MAAM,CAAC;AAGrE,QAAI,CAAC,OAAO,SAAS,GAAG;AACtB,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAGlC;AAEA,UAAM,iBAAiB,MAAM,OAAO,SAAS,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;AACxE,QAAI,CAAC,gBAAgB;AACnB,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAGlC;AAEA,UAAM,QAAQ,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,aAAa;AAAA,MACxD,WAAW;AAAA,IACb,CAAC;AAED,UAAM,eAAe,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,cAAc;AAAA,MAChE,WAAW;AAAA,IACb,CAAC;AAED,WAAO;AAAA,MACL,SAAS;AAAA,MACT,MAAM,EAAE,GAAG,KAAK,SAAS,EAAE;AAAA,MAC3B,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,SAAS,EAAE;AAAA,MAC3C;AAAA,MACA;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,gBAAgB,KAAK;AACnC,UAAM;AAAA,EACR;AACF;","names":[]}