UNPKG

sails-hook-blacksails

Version:
116 lines (107 loc) 3.02 kB
// import validator from 'validator'; exports.register = async (roleModel, req, res, next) => { // switch for detect the request is from mobile API or form sumbit. const isApi = req.param('api') || false; try { if (!isApi) { await UtilHelper.checkRecaptcha(req.body); } const languageCode = res.langCode(); const { email, username, password, customData, } = req.body; // verify if meet the necessary parameters or not. UtilHelper.checkRequiredParams([{ email }, { password }]); const userData = { username: username || email, password, email, role: roleModel, }; let newUser = {}; newUser = await UserService.register(userData, languageCode); if (roleModel === 'user') { // 寄送應徵申請送出通知 - 求職者 const userMailConfig = await MessageService.greeting({ email: email || newUser.email, user: newUser, languageCode, }); const userEmail = await Notification.create(userMailConfig); await MessageService.sendMail(userEmail); } // return next(null, newUser); } catch (err) { sails.log.error(err.stack); return next(err); } }; exports.connect = async (req, res, next) => { sails.log.info('=== protocol local connect ==='); const user = req.user; const password = req.param('password'); try { const passport = await Passport.find({ protocol: 'local', UserId: user.id, }); if (!passport) { await Passport.create({ protocol: 'local', password, UserId: user.id, }); } return next(null, user); } catch (e) { return next(e); } }; exports.login = async (req, identifier, password, next) => { sails.log.info('=== protocol local login ==='); const query = { where: {}, include: [{ model: Role, include: [Group], }], // logging: console.log, }; try { query.where.username = identifier; // console.log('login query=>', query); const user = await User.findOne(query); if (user) { sails.log('=== user =>', user.username); } else { sails.log('\n===\n no any user has been founded.\n==='); throw Error(MESSAGE.BAD_REQUEST.USER_NOTFOUND); } const passport = await Passport.findOne({ where: { UserId: user.id, }, }); if (passport) { const isPasswordValid = await passport.validatePassword(password); if (isPasswordValid) { const verify = AuthHelper.verifyUser(user, req.url); if (verify.success === false) { throw Error(MESSAGE.ERROR.USER_SUSPEND); } const userAgent = req.headers['user-agent']; await user.loginSuccess({ userAgent }); return next(null, user.get({ plain: true })); } throw Error(MESSAGE.BAD_REQUEST.CHECK_FAIL); } throw Error(MESSAGE.BAD_REQUEST.PASSWORD_NOTSET); } catch (e) { sails.log.error(e); return next(e); } };