UNPKG

64.2 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/Api/AuthApi.js"],"names":["AuthApi","loginCreds","app","module","authModule","helpers","login","bind","signup","updateToken","getPermit","confirmPermit","restorePassword","status","session","check","info","socialAuth","socialCallback","req","UserModel","userId","user","_id","Err","findById","token","generateAuthToken","prepare","withAppState","getAuthSession","criteria","data","Object","keys","findOne","select","exists","rawParams","params","cred","includes","password","getUserCriteria","verifyPassword","permitModule","PermitModel","userFields","loginParams","existUser","loginField","setPassword","save","email","genCode","code","createPermit","expiredAt","createExpiredAt","type","provider","permit","emit","link","url","sort","createdAt","activate","setStatus","Date","Bluebird","props","__pack","permitId","getStatus","String","permitAction","providers","strategies","strategy","getInfo","isDev","res","next","origin","passportService","authenticate","getPassportAuthenticateParams","method","resolve","reject","err","redirect","models","User","PassportModel","Passport","getByToken","p","passport","getUser","merge","profile","generateUsername","username","updateFromPassport","checkNotFound","then","find","isAuth","deleteOne","ok","findParams","passportId","t","tokenLogin","modules","auth","config","sms","smsConfig","phone","lastCode","smsText","tbot","notify","text","qs","to","api","fetch","body","messages","pack","defaultCode","create","contacts","hasGrant","ObjectId","db","Types","date","changeEmailTimeout","countDocuments","activatedAt","$exists","$gte","$in","isTimeout","$ne","emailExist","str","getTime","generateUniqCode","codeParams","oldEmail","markModified","eventType","targetUser","$or","meta","approvedEmail","permits","map","disabledAt","BaseApi"],"mappings":"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","sourcesContent":["import { isDev } from '@lskjs/env';\nimport Err from '@lskjs/err';\nimport BaseApi from '@lskjs/server-api';\nimport canonizeParams from '@lskjs/utils/canonizeParams';\nimport getReqOrigin from '@lskjs/utils/getReqOrigin';\nimport transliterate from '@lskjs/utils/transliterate';\n// import canonizePhone from '@lskjs/utils/canonizePhone';\n// import validatePhone from '@lskjs/utils/validatePhone';\nimport validateEmail from '@lskjs/utils/validateEmail';\nimport Bluebird from 'bluebird';\nimport get from 'lodash/get';\nimport map from 'lodash/map';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\nimport random from 'lodash/random';\nimport set from 'lodash/set';\nimport unset from 'lodash/unset';\n\nexport class AuthApi extends BaseApi {\n async init() {\n await super.init();\n this.authModule = await this.app.module('auth');\n this.helpers = this.authModule.helpers;\n }\n getRoutes() {\n // const { isAuth } = this.app.middlewares;\n return {\n ...super.getRoutes(),\n '/login': this.login.bind(this),\n '/signup': this.signup.bind(this), // POST\n '/updateToken': this.updateToken.bind(this),\n\n '/permit': this.getPermit.bind(this),\n // '/confirm': this.confirmPermit.bind(this),\n '/permit/confirm': this.confirmPermit.bind(this),\n // // '/loginToken': this.loginToken.bind(this),\n\n '/restorePassword': this.restorePassword.bind(this),\n // '/setPassword': this.setPassword.bind(this), => confirm\n\n // '/email/confirm': this.confirmEmail.bind(this), // (req, res) => res.redirect('/cabinet'));\n\n // '/phone/code': this.phoneCode.bind(this),\n // '/phone/approve': this.phoneApprove.bind(this), => confirm\n // '/phone/login': this.phoneLogin.bind(this),\n //\n '/status': this.status.bind(this),\n '/session': this.session.bind(this),\n '/check': this.check.bind(this),\n\n // Регистрация пользователя через соц сеть\n // '/social': this.getSocials.bind(this), // isAuth,\n // '/social/signup': this.socialLogin.bind(this),\n // '/social/login': this.socialLogin.bind(this),\n // '/social/bind': this.socialBind.bind(this), // Добавление соц.сетей к пользователю // isAuth,\n // '/social/unbind': this.socialUnbind.bind(this), // isAuth,\n\n // '/passport/getByToken': this.getPassportByToken.bind(this),\n // '/passports/detach': this.passportsDetach.bind(this),\n // '/restorePasswordPermit': this.restorePasswordPermit.bind(this),\n\n '/info': this.info.bind(this),\n // social auth init\n '/:provider': this.socialAuth.bind(this),\n '/:provider/auth': this.socialAuth.bind(this),\n '/:provider/callback': this.socialCallback.bind(this),\n };\n }\n\n // getRoutes() {\n // return {\n // '/login': this.login.bind(this),\n // '/accountkit': this.accountkit.bind(this),\n // '/facebook': this.facebook.bind(this),\n // '/social': this.social.bind(this),\n // // '/vkontakte': this.vkontakte.bind(this),\n // '/phone': this.phoneOrEmail.bind(this),\n // '/email': this.phoneOrEmail.bind(this),\n // '/confirm': this.confirm.bind(this),\n // '/status': this.status.bind(this),\n // '/check': this.check.bind(this),\n // };\n // }\n\n // async login() {\n // return { asd: 12 };\n // }\n\n async updateToken(req) {\n const UserModel = await this.app.module('models.UserModel');\n const userId = req.user && req.user._id;\n if (!userId) throw new Err('auth.tokenIncorrect', { status: 404 });\n\n const user = await UserModel.findById(userId);\n if (!user) throw new Err('auth.userNotFound', { status: 404 });\n req.user = user;\n\n const token = this.helpers.generateAuthToken(user);\n return {\n user: await UserModel.prepare(user, { req, withAppState: true }),\n token,\n };\n }\n\n async status() {\n return {};\n }\n\n async session(req) {\n const authModule = await this.app.module('auth');\n return authModule.getAuthSession(req);\n }\n\n async check(req) {\n const criteria = canonizeParams(req.data);\n if (!Object.keys(criteria)) throw new Err('auth.loginRequired', { status: 400 });\n const UserModel = await this.app.module('models.UserModel');\n const user = await UserModel.findOne(criteria).select('_id');\n return {\n exists: !!user,\n };\n }\n //\n\n loginCreds = ['username', 'email', 'phone', 'login'];\n getUserCriteria(rawParams) {\n const { loginCreds = [] } = this;\n const params = canonizeParams(rawParams);\n // eslint-disable-next-line no-restricted-syntax\n for (const cred of loginCreds) {\n if (loginCreds.includes(cred) && params[cred]) {\n return { [cred]: params[cred] };\n }\n }\n throw new Err('auth.loginEmpty', { status: 400 });\n }\n\n async login(req) {\n const UserModel = await this.app.module('models.UserModel');\n const { password } = req.data;\n if (!password) throw new Err('auth.passwordEmpty', { status: 400 });\n const user = await UserModel.findOne(this.getUserCriteria(req.data));\n if (!user) throw new Err('auth.loginIncorrect', { status: 400 });\n if (get(user, 'statuses.blockedAt')) {\n throw new Err('auth.blocked', { status: 403 });\n }\n if (!(await this.helpers.verifyPassword(password, user.password))) {\n throw new Err('auth.passwordIncorrect', { status: 400 });\n }\n req.user = user;\n const token = this.helpers.generateAuthToken(user);\n // await this.helpers.updateLoginAt(user);\n return {\n _id: user._id,\n user: await UserModel.prepare(user, { req, withAppState: true }),\n token,\n };\n }\n\n async signup(req) {\n const permitModule = await this.app.module('permit');\n const UserModel = await this.app.module('models.UserModel');\n const PermitModel = await this.app.module('models.PermitModel');\n const { password, ...userFields } = req.data;\n const loginParams = canonizeParams(req.data);\n const criteria = this.getUserCriteria(loginParams);\n const existUser = await UserModel.findOne(criteria).select('_id');\n const loginField = Object.keys(criteria)[0];\n if (existUser) throw new Err(`auth.${loginField}Exists`, { status: 400 });\n const user = new UserModel({\n ...userFields, // TODO: validation\n ...loginParams,\n });\n if (password) {\n await this.helpers.setPassword(user, password);\n }\n await user.save();\n req.user = user;\n\n if (loginField === 'email') {\n const { email } = loginParams;\n const code = await permitModule.genCode('emailVerify');\n const permit = await PermitModel.createPermit({\n expiredAt: permitModule.createExpiredAt('emailVerify'),\n type: 'auth.confirmEmail',\n userId: user._id,\n info: {\n provider: 'email',\n email,\n userId: user._id,\n },\n code,\n });\n this.app.emit('events.auth.signup', {\n type: 'events.auth.signup',\n userId: user._id,\n user,\n permit,\n email: permit.info.email,\n link: this.app.url(`/auth/permit?permitId=${permit._id}&code=${permit.code}`),\n });\n }\n // const link = (await this.helpers.genereateEmailApprovedLink) ? this.helpers.genereateEmailApprovedLink(user) : null;\n // this.app.emit('events.auth.signup', { user, link });\n const token = this.helpers.generateAuthToken(user);\n return {\n signup: true,\n _id: user._id,\n user: await UserModel.prepare(user, { req, withAppState: true }),\n token,\n };\n }\n\n async permitAction({ req, permit }) {\n const UserModel = await this.app.module('models.UserModel');\n const PermitModel = await this.app.module('models.PermitModel');\n if (permit.type === 'auth.confirmEmail') {\n const user = await UserModel.findById(permit.userId).sort({ createdAt: 1 });\n if (!user) throw new Err('!user');\n await permit.activate();\n user.setStatus('confirmEmailAt', new Date());\n await user.save();\n const token = this.helpers.generateAuthToken(user);\n return Bluebird.props({\n __pack: true,\n user: UserModel.prepare(user, { req }),\n token,\n data: {\n permit: PermitModel.prepare(permit, { req }),\n },\n });\n }\n if (permit.type === 'auth.restorePassword') {\n const { password } = req.data;\n const user = await UserModel.findById(permit.userId);\n if (!user) throw new Err('!user');\n await permit.activate();\n await this.helpers.setPassword(user, password);\n user.setStatus('passwordAt', new Date());\n await user.save();\n const token = this.helpers.generateAuthToken(user);\n return Bluebird.props({\n __pack: true,\n user: UserModel.prepare(user, { req }),\n token,\n data: {\n permit: PermitModel.prepare(permit, { req }),\n },\n });\n }\n throw new Err('permit.incorrectType');\n }\n\n async confirmPermit(req) {\n const { code, permitId } = req.data;\n const PermitModel = await this.app.module('models.PermitModel');\n if (!code) throw new Err('!code');\n if (!permitId) throw new Err('permit.permitIdEmpty', { status: 400 });\n // const permit = await PermitModel.findById(permitId);\n // if (!permit) throw new Err(404, 'Permit not found!');\n const permit = await PermitModel.findById(permitId);\n if (!permit) throw new Err('permit.permitNotFound', { status: 404 });\n const status = permit.getStatus();\n\n if (status !== 'valid') {\n throw new Err('permit.statusInvalid', { status: 400, data: { status } });\n }\n if (String(code) !== String(permit.code)) throw new Err('permit.codeInvalid', { status: 400 });\n\n return this.permitAction({ req, permit });\n }\n\n async restorePassword(req) {\n const permitModule = await this.app.module('permit');\n const UserModel = await this.app.module('models.UserModel');\n const PermitModel = await this.app.module('models.PermitModel');\n const { email } = req.data;\n\n if (!email || !validateEmail(email)) {\n throw new Err('auth.emailInvalid');\n }\n const user = await UserModel.findOne({ email }).select(['email']);\n if (!user) throw new Err('auth.userNotFound', { status: 404 });\n const code = await permitModule.genCode('emailVerifyStrong');\n const permit = await PermitModel.createPermit({\n expiredAt: permitModule.createExpiredAt('emailVerifyStrong'),\n type: 'auth.restorePassword',\n userId: user._id,\n info: {\n userId: user._id,\n email,\n },\n code,\n });\n this.app.emit('events.auth.restorePassword', {\n type: 'events.auth.restorePassword',\n userId: user._id,\n user,\n permit,\n email,\n link: this.app.url(`/auth/permit?permitId=${permit._id}&code=${permit.code}`),\n });\n return PermitModel.prepare(permit, { req });\n }\n\n // async setPassword(req) {\n // const UserModel = await this.app.module('models.UserModel');\n // cPermit UserModel = await this.app.module('models.PermitModel');\n // const { code, password } = req.data;\n // if (!code) throw new Err('!code');\n // const permit = await PermitModel.findOne({\n // type: 'user.restorePassword',\n // code,\n // });\n // if (!permit) throw { code: 'invalidCode' };\n // if (permit.activatedAt) throw { code: 'activated' };\n // const date = new Date();\n // if (date > permit.expiredAt) throw { code: 'expired' };\n // const user = await UserModel.findById(permit.userId);\n // if (!user) throw new Err('!user');\n // await permit.activate();\n // await this.helpers.setPassword(user, password);\n // set(user, 'private.lastUpdates.password', date);\n // user.markModified('private.lastUpdates.password');\n // await user.save();\n // const token = this.helpers.generateAuthToken(user);\n // return Bluebird.props({\n // __pack: true,\n // user: UserModel.prepare(user, { req }),\n // token,\n // data: {\n // permit: PermitModel.prepare(permit, { req }),\n // },\n // });\n // }\n // async silent(req) {\n // const UserModel = this.app.models.UserModel || this.app.models.User;\n // const { login, params } = canonizeParams(req.data);\n // const username = `__s${Date.now()}__`;\n // const user = new UserModel({\n // username,\n // type: 'silent',\n // ...params,\n // });\n // await user.save();\n // req.user = user;\n // return {\n // signup: true,\n // user: await UserModel.prepare(user, { req, withAppState: true }),\n // token: user.generateAuthToken(),\n // };\n // }\n\n // async recovery(req) {\n // const UserModel = this.app.models.UserModel || this.app.models.User;\n // const { mailer } = this.app.modules;\n // if (!mailer) throw new Err('Система не может отправить email');\n\n // // const params = req.data;\n\n // const criteria = this.getUserCriteria(req);\n // const user = await UserModel.findOne(criteria);\n // if (!user) throw new Err('Неверный логин', { status: 404 });\n // const email = user.getEmail();\n // if (!email) throw new Err('У этого пользователя не был указан емейл для восстановления', { status: 400 });\n\n // const password = UserModel.generatePassword();\n\n // await mailer.send({\n // ...user.getMailerParams('primary'),\n // template: 'recovery',\n // // locale: user.locale || req.locale,\n // // to: user.getEmail(),\n // params: {\n // user: user.toJSON(),\n // password,\n // },\n // });\n\n // await user.setPassword(password);\n // await user.save();\n\n // return {\n // emailSended: true,\n // };\n // }\n\n async info() {\n const authModule = await this.app.module('auth');\n if (!authModule) return [];\n return {\n providers: map(authModule.strategies, (strategy, provider) => ({\n provider,\n ...omit(strategy.getInfo(), isDev ? [] : ['settings', 'clientId']),\n })),\n };\n }\n\n async socialAuth(req, res, next) {\n const authModule = await this.app.module('auth');\n if (!authModule) throw new Err('!authModule');\n const { provider } = req.params;\n const origin = getReqOrigin(req);\n const strategy = authModule.strategies[provider];\n if (!strategy) next(new Err('auth.providerInvalid'), { status: 404, provider });\n authModule.passportService.authenticate(\n provider,\n strategy.getPassportAuthenticateParams({ method: 'auth', origin }),\n )(req, res, next);\n }\n\n async socialCallback(req, res) {\n const authModule = await this.app.module('auth');\n if (!authModule) throw new Err('!authModule');\n const { provider } = req.params;\n return new Bluebird((resolve, reject) => {\n authModule.passportService.authenticate(\n provider,\n authModule.strategies[provider].getPassportAuthenticateParams({ method: 'callback' }),\n async (err, data) => {\n if (err) return reject(err);\n return resolve(res.redirect(data.redirect || '/'));\n },\n )(req);\n });\n }\n\n // ////////////////////////\n\n async socialLogin(req) {\n const UserModel = this.app.models.UserModel || this.app.models.User;\n const PassportModel = this.app.models.PassportModel || this.app.models.Passport;\n const passport = await PassportModel.getByToken(req.data.p);\n let user = await passport.getUser();\n if (!user) {\n const params = merge(\n { profile: passport.profile },\n // req.data, // meta\n {\n username: await passport.generateUsername(UserModel),\n // _id,\n },\n );\n // console.log({ params });\n user = new UserModel(params);\n // await user.save();\n user.updateFromPassport(passport, { req });\n await user.save();\n passport.userId = user._id;\n // console.log('passport.save before', passport);\n await passport.save();\n }\n req.user = user;\n\n return {\n user: await UserModel.prepare(user, { req, withAppState: true }),\n token: user.generateAuthToken(),\n };\n }\n\n async socialBind(req) {\n const { checkNotFound } = this.app.helpers;\n const UserModel = this.app.models.UserModel || this.app.models.User;\n const PassportModel = this.app.models.PassportModel || this.app.models.Passport;\n const userId = req.user._id;\n const passport = await PassportModel.getByToken(req.data.p).then(checkNotFound);\n const user = await UserModel.findById(req.user._id).then(checkNotFound);\n if (passport.userId) throw new Err('passport.userId already exist', { status: 400 });\n passport.userId = userId;\n // user.passports.push(passport._id);\n await passport.save();\n await user.updateFromPassport(passport);\n await user.save();\n return PassportModel.find({\n userId,\n });\n }\n\n async getSocials(req) {\n const PassportModel = this.app.models.PassportModel || this.app.models.Passport;\n const userId = req.user._id;\n return PassportModel.find({\n userId,\n });\n }\n\n async passportsDetach(req) {\n await this.isAuth(req);\n const { PassportModel } = this.app.models;\n const { _id } = req.data;\n const passport = await PassportModel.findById(_id);\n if (String(passport.userId) !== String(req.user._id)) throw new Err('!acl');\n await PassportModel.deleteOne({ _id: passport._id });\n // await passport.remove();\n return { ok: 1 };\n }\n\n async socialUnbind(req) {\n const { checkNotFound } = this.app.helpers;\n const UserModel = this.app.models.UserModel || this.app.models.User;\n const PassportModel = this.app.models.PassportModel || this.app.models.Passport;\n const params = req.data;\n const userId = req.user._id;\n const user = await UserModel.findById(req.user._id).then(checkNotFound);\n\n // OR passportId: passport._id\n const findParams = {};\n if (params.passportId) findParams._id = params.passportId;\n if (params.provider) findParams.provider = params.provider;\n findParams.userId = userId;\n if (!findParams.passportId && !findParams.provider) {\n throw new Err('!findParams.passportId && !findParams.provider', { status: 400 });\n }\n const passport = await PassportModel.findOne(findParams).then(checkNotFound);\n if (passport.userId !== userId) throw new Err('Wrong user!', { status: 403 });\n passport.userId = null;\n // user.passports = user.passports.filter((pId) => {\n // return pId && pId.toString() !== params.p;\n // });\n await passport.save();\n await user.save();\n return PassportModel.find({\n userId,\n });\n }\n\n async tokenLogin(req) {\n const UserModel = this.app.models.UserModel || this.app.models.User;\n const token = req.data.t || req.data.token;\n if (!token) throw new Err('!token', { status: 400 });\n\n const user = await UserModel.tokenLogin({ token });\n if (!user) throw new Err('auth.userNotFound', { status: 404 });\n req.user = user;\n\n return {\n user: await UserModel.prepare(user, { req, withAppState: true }),\n token: user.generateAuthToken(),\n };\n }\n\n async phoneCode(req) {\n if (!this.app.modules.auth.config.sms) throw new Err('!module.config.sms');\n const smsConfig = this.app.modules.auth.config.sms;\n\n const { phone } = req.data;\n const code = random(100000, 999999);\n this.lastCode = code;\n\n const smsText = `Ваш проверочный код: ${code}`;\n if (this.app.modules.auth.tbot) {\n this.app.modules.auth.tbot.notify(`Номер: ${phone}\\n${smsText}`);\n }\n const text = transliterate(smsText);\n\n let res;\n // console.log('smsConfig.provider', smsConfig.provider);\n if (smsConfig.provider === 'bytehand') {\n const qs = {\n ...smsConfig.params,\n to: phone,\n text,\n };\n res = await this.app.api.fetch('http://bytehand.com:3800/send', { qs });\n } else if (smsConfig.provider === 'nexmo') {\n const body = {\n ...smsConfig.params,\n to: phone,\n text,\n };\n // console.log('https://rest.nexmo.com/sms/json', { body });\n res = await this.app.api.fetch('https://rest.nexmo.com/sms/json', {\n method: 'POST',\n // headers: {\n // 'Content-Type': '!',\n // },\n body,\n });\n // console.log(res.messages[0].status !== 0, res.messages[0].status, JSON.stringify(res, null, 2));\n if (res.messages[0].status !== '0') {\n throw res.messages[0]['error-text'];\n // throw res.messages[0].errorText;\n }\n } else {\n throw new Err('!provider');\n }\n const pack = {\n phone,\n res,\n };\n if (isDev) {\n pack.code = code;\n }\n // console.log('result', JSON.stringify(pack, null, 2));\n return pack;\n }\n\n phoneApprove(req) {\n if (!this.app.modules.auth.config.sms) throw new Err('!module.config.sms');\n const { phone, code } = req.data;\n return { phone, code };\n }\n\n async phoneLogin(req) {\n if (!this.app.modules.auth.config.sms) throw new Err('!module.config.sms');\n const { phone, code } = req.data;\n const UserModel = this.app.models.UserModel || this.app.models.User;\n if (\n !(\n (this.app.modules.auth.config.sms.defaultCode && code === this.app.modules.auth.config.sms.code) ||\n code === this.lastCode\n )\n ) {\n throw new Err('Код не верный');\n }\n\n let user = await UserModel.findOne({ username: phone });\n if (!user) {\n user = await UserModel.create({\n username: phone,\n profile: {\n contacts: {\n phone,\n },\n },\n });\n }\n req.user = user;\n\n return {\n user: await UserModel.prepare(user, { req, withAppState: true }),\n token: user.generateAuthToken(),\n };\n }\n\n async getPassportByToken(req) {\n const PassportModel = this.app.models.PassportModel || this.app.models.Passport;\n\n return PassportModel.getByToken(req.data.p);\n }\n async getPermit(req) {\n const { _id } = req.data;\n if (!_id) throw new Err('!_id');\n const PermitModel = await this.app.module('models.PermitModel');\n const permit = await PermitModel.findOne({\n _id,\n });\n if (!permit) throw new Err('!permit');\n if (permit.type === 'user.restorePassword') return PermitModel.prepare(permit, { req });\n if (!req.user || !req.user._id) throw new Err('!userId');\n if (!permit) throw new Err('not found');\n if (this.app.hasGrant(req.user, 'superadmin') || String(permit.userId) === req.user._id) {\n return PermitModel.prepare(permit, { req });\n }\n throw new Err('!permission');\n }\n async emailPermit(req) {\n const permitModule = await this.app.module('permit');\n const UserModel = this.app.models.UserModel || this.app.models.User;\n const PermitModel = await this.app.module('models.PermitModel');\n\n const { ObjectId } = this.app.db.Types;\n if (!req.user || !req.user._id) throw new Err('!_id');\n let userId = req.user._id;\n if (req.data._id && req.data._id !== userId) {\n if (this.app.hasGrant(req.user, 'admin')) {\n userId = req.data._id;\n } else {\n throw new Err('!permission');\n }\n }\n const user = await UserModel.findById(userId);\n if (!user) throw new Err('auth.userNotFound', { status: 404 });\n const { email } = req.data;\n if (!email || !validateEmail(email)) {\n throw new Err('auth.emailInvalid');\n }\n let type;\n if (user.email) {\n type = 'change';\n } else {\n type = 'set';\n }\n if (user.email && email === user.email) {\n throw new Err('emailNotChanged');\n }\n const date = new Date();\n const changeEmailTimeout = get(this, 'app.config.auth.changeEmailTimeout', 7 * 24 * 60 * 60 * 1000);\n const isTimeout = await PermitModel.countDocuments({\n activatedAt: {\n $exists: false,\n },\n expiredAt: {\n $gte: date,\n },\n 'info.email': email,\n 'info.userId': ObjectId(user._id),\n type: {\n $in: ['user.setEmail', 'user.changeEmail'],\n },\n createdAt: {\n $gte: +date - changeEmailTimeout,\n },\n });\n if (isTimeout) {\n throw new Err('timeout');\n }\n const emailExist = await UserModel.countDocuments({\n _id: {\n $ne: userId,\n },\n email,\n });\n if (emailExist) {\n throw new Err('emailExist');\n }\n let str;\n if (type === 'change') {\n str = `${user._id}_${email}_${user.email}_${date.getTime()}`;\n } else if (type === 'set') {\n str = `${user._id}_${email}_${date.getTime()}`;\n }\n const code = await PermitModel.generateUniqCode({\n codeParams: { str, type: 'hash' },\n criteria: {\n type: `user.${type}Email`,\n activatedAt: {\n $exists: false,\n },\n expiredAt: {\n $gte: date,\n },\n },\n });\n const permit = await PermitModel.createPermit({\n expiredAt: permitModule.createExpiredAt('emailVerifyStrong'),\n type: `user.${type}Email`,\n userId: user._id,\n info: {\n email,\n oldEmail: user.email,\n userId: user._id,\n type,\n },\n code,\n });\n set(user, 'private.info.email', email);\n set(user, 'private.info.emailPermitId', permit._id);\n user.markModified('private.info');\n await user.save();\n const eventType = `events.user.${type}Email${this.app.hasGrant(user, 'newUser') ? 'Old' : ''}`;\n this.app.emit(eventType, {\n type: eventType,\n targetUser: user,\n user,\n userId: user._id,\n permit,\n email,\n link: this.app.url(`/auth/confirm/email?code=${permit.code}`),\n });\n return PermitModel.prepare(permit, { req });\n }\n async confirmEmail(req) {\n const UserModel = this.app.models.UserModel || this.app.models.User;\n const PermitModel = await this.app.module('models.PermitModel');\n const { code } = req.data;\n if (!code) throw new Err('!code');\n const permit = await PermitModel.findOne({\n $or: [\n {\n type: 'user.changeEmail',\n },\n {\n type: 'user.setEmail',\n },\n ],\n code,\n });\n if (!permit) throw new Err('auth.invalidCode');\n if (permit.activatedAt) throw new Err('activated');\n const date = new Date();\n if (date > permit.expiredAt) throw new Err('expired');\n const user = await UserModel.findById(permit.info.userId);\n if (!user) throw new Err('!user');\n const emailExist = await UserModel.findOne({\n _id: {\n $ne: user._id,\n },\n email: permit.info.email,\n }).select(['email']);\n if (emailExist) {\n throw new Err('auth.emailExist');\n }\n if (user.email && permit.info.oldEmail && user.email !== permit.info.oldEmail) {\n throw new Err('auth.emailWasChanged');\n }\n await permit.activate();\n user.email = permit.info.email;\n unset(user, 'private.info.emailPermitId');\n unset(user, 'private.info.email');\n user.markModified('private.info');\n set(user, 'private.lastUpdates.email', date);\n user.markModified('private.lastUpdates.email');\n if (!user.meta.approvedEmail) {\n user.meta.approvedEmail = true;\n user.markModified('meta.approvedEmail');\n }\n await user.save();\n const permits = await PermitModel.find({\n _id: { $ne: permit._id },\n type: permit.type,\n userId: user._id,\n });\n await Bluebird.map(permits, (p) => {\n p.disabledAt = date; // eslint-disable-line no-param-reassign\n return p.save();\n });\n return permit;\n }\n async findOneByCode(req) {\n const { code } = req.data;\n if (!code) throw new Err('!code');\n const PermitModel = await this.app.module('models.PermitModel');\n const permit = await PermitModel.findOne({\n code,\n });\n if (!permit) throw new Err('!permit');\n if (permit.type === 'user.restorePassword') return PermitModel.prepare(permit, { req });\n if (!req.user || !req.user._id) throw new Err('!userId');\n if (this.app.hasGrant(req.user, 'superadmin') || String(permit.userId) === req.user._id) {\n return PermitModel.prepare(permit, { req });\n }\n throw new Err('!permission');\n }\n}\n\nexport default AuthApi;\n"],"file":"AuthApi.js"}
\No newline at end of file