Esempio n. 1
0
 return new LocalStrategy({passReqToCallback: true}, async (req: any, username: string, password: string, done: any) => {
     logger.debug(username, password);
     const user: IUser = await UserDB.getByCredentials(username, password);
     if (user) {
         (user as any).usedStrategy = "local";
         return done(null, user);
     } else {
         return done(undefined, false, {message: "Invalid email or password."});
     }
 });
Esempio n. 2
0
 async signup(__: any, data: ISignupMutation) {
     try {
         const {email, password, name} = data;
         let errors: Array<ValidationErrorDescription> = await Promise.all([Validator.validate("user.email.signup", email), Validator.validate("user.password", password), Validator.validate("user.name", name)]);
         errors = _.compact(errors);
         if (errors.length) throw new ValidationError(errors);
         let user = await UserDB.create({email, password, name});
         return {me: UserDB.getPlainFields(user)};
     } catch (e) {
         logger.error(e);
         throw new GraphQLError(e);
     }
 },
 async login(__: any, data: ILoginMutation) {
     const {email, password} = data;
     const user: any = await UserDB.getByCredentials(email, password);
     if (user) {
         return {me: UserDB.getPlainFields(user)};
     } else {
         throw new GraphQLError("Invalid email or password");
     }
 },
 logout: AuthMiddleware(["local", "access"], async (_: any, __: any, context: IContext): Promise<boolean> => {
     try {
         await (context.user as IUser).regenerateJWTSalts();
         return true;
     } catch (err) {
         logger.error(err);
         return false;
     }
 })