UNPKG

6.51 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/Api/AuthMobileApi.js"],"names":["Api","req","provider","params","me","user","UserModel","app","models","findOne","_id","findById","Err","operation","permit","info","getOperation","editedAt","Date","signinAt","sort","createdAt","user2","activate","save","token","generateAuthToken","getStatus","prepare","view","isNew","status","BaseApi"],"mappings":"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","sourcesContent":["import Err from '@lskjs/err';\n\nimport BaseApi from './AuthApi';\n\nexport default class Api extends BaseApi {\n async getOperation({ req, provider, params } = {}) {\n let me = req.user;\n const { UserModel } = this.app.models;\n let user;\n if (params) {\n user = await UserModel.findOne(params);\n }\n let operation;\n if (me && me._id) {\n me = await UserModel.findById(me._id);\n if (user) {\n if (provider === 'email') {\n throw new Err('EMAIL_HAS_BEEN_ATTACHED');\n } else if (provider === 'phone') {\n throw new Err('PHONE_HAS_BEEN_ATTACHED');\n } else {\n throw new Err('PROVIDER_HAS_BEEN_ATTACHED');\n }\n } else {\n operation = 'attach';\n }\n } else {\n me = null;\n if (user) {\n operation = 'login';\n } else {\n operation = 'signup';\n }\n }\n return operation;\n }\n\n async permitAction({ req, permit }) {\n const { UserModel } = this.app.models;\n const { provider } = permit.info;\n if (!provider) throw new Err('!provider');\n\n if (!permit.info[provider]) throw new Err('!permit.info[provider]');\n const params = {\n [provider]: permit.info[provider],\n };\n\n const operation = await this.getOperation(req, { permit, provider, params });\n\n let user;\n if (operation === 'signup') {\n user = new UserModel(params);\n user.editedAt = new Date();\n user.signinAt = new Date();\n } else if (operation === 'login') {\n user = await UserModel.findOne(params).sort({ createdAt: 1 });\n if (!user) throw new Err('!user');\n user.signinAt = new Date();\n } else if (operation === 'attach') {\n if (!req.user) throw new Err('!user');\n user = await UserModel.findById(req.user._id);\n if (!user) throw new Err('!user');\n user[provider] = permit.info[provider];\n user.editedAt = new Date();\n const user2 = await UserModel.findOne(params);\n if (user2) throw new Err('HAS_BEEN_ATTACHED');\n } else {\n throw new Err('!operation');\n }\n\n await permit.activate();\n await user.save();\n const token = user.generateAuthToken();\n // console.log(`auth/confirm ${user._id} ${token}`); // this.app.logger\n return {\n isNew: operation === 'signup',\n operation,\n token,\n status: await user.getStatus(),\n user: await UserModel.prepare(user, { req, view: 'extended' }),\n };\n }\n}\n"],"file":"AuthMobileApi.js"}
\No newline at end of file