async signIn (resolve, source, args, context, info) { let { email } = args email = validator.normalizeEmail(email) email = validator.trim(email) Object.assign(args, { email }) return resolve(source, args, context, info) }
async signUp (resolve, source, args, context, info) { let { email } = args email = validator.normalizeEmail(email) email = validator.trim(email) Object.assign(args, { email }) const { password } = args if (!validator.isEmail(email, { allow_utf8_local_part: false })) { return Promise.reject(new Error('Error: email')) } if (!validator.isLength(password, { min: 6 })) { return Promise.reject(new Error('Error: password')) } return resolve(source, args, context, info) }
email: validator.normalizeEmail(email), isConfirmed: false
/** * Normalize email. * Since we are using OAuth login too, we'll try to mimick other sites like GitHub. */ export function normalizeEmail(email) { return validator.normalizeEmail(email, { all_lowercase: true, gmail_lowercase: true, gmail_remove_dots: false, gmail_remove_subaddress: false, gmail_convert_googlemaildotcom: false, outlookdotcom_lowercase: true, outlookdotcom_remove_subaddress: false, yahoo_lowercase: true, yahoo_remove_subaddress: false, icloud_lowercase: true, icloud_remove_subaddress: false, }); }
sanitizedData[ fieldName ] = ( 'email' === type ) ? validator.normalizeEmail( sanitizedData[ fieldName ] ) : sanitizedData[ fieldName ]; sanitizedData[ fieldName ] = validator.escape( sanitizedData[ fieldName ] );
async updateUser (resolve, source, args, context, info) { let { email } = args email = validator.normalizeEmail(email) email = validator.trim(email) Object.assign(args, { email }) const { firstName, lastName } = args if (!validator.isEmail(email, { allow_utf8_local_part: false })) { return Promise.reject(new Error('Error: email')) } if (!validator.isLength(firstName, { min: 2 })) { return Promise.reject(new Error('Error: firstName')) } if (!validator.isLength(lastName, { min: 2 })) { return Promise.reject(new Error('Error: lastName')) } return resolve(source, args, context, info) }
async resetPassword (resolve, source, args, context, info) { let { email } = args email = validator.normalizeEmail(email) email = validator.trim(email) Object.assign(args, { email }) return resolve(source, args, context, info) }