// ActivateAppUser activates an application user based on its token func ActivateAppUser(token string) error { var user, err = identity.GetUserByActivationToken(token) if err != nil { return err } if util.IsDateExpiredFromNow(user.ActivateAccountTokenExpireDate) { return ErrActivationTokenExpired } user.AccountStatus = identity.AccountStatusActivated return identity.UpdateUser(user) }
// ResetPassword resets the password of an application user func ResetPassword(token, password string) error { var user, err = identity.GetUserByResetPasswordToken(token) if err != nil { return err } if util.IsDateExpiredFromNow(user.ResetPasswordTokenExpireDate) { return ErrResetPasswordTokenExpired } passwordHash, err := util.HashString(password) if err != nil { return err } user.Password = passwordHash return identity.UpdateUser(user) }
// RequestResetPassword generates a reset token and sends an email with the link where to perform the change func RequestResetPassword(emailAddress, passwordResetServiceLink string) error { var user, err = identity.GetUserByEmail(emailAddress) if err != nil { return err } token, err := util.GenerateUUID() if err != nil { return err } user.ResetPasswordToken = token user.ResetPasswordTokenExpireDate = util.NextDateFromNow(passwordResetTokenExpireTime) err = identity.UpdateUser(user) if err != nil { return err } go sendPasswordResetEmail(emailAddress, passwordResetServiceLink, token) return nil }
// ResendAccountActivationEmail resends the email with the details for activating their user account func ResendAccountActivationEmail(emailAddress, activationServiceLink string) error { var user, err = identity.GetUserByEmail(emailAddress) if err != nil { return err } token, err := util.GenerateUUID() if err != nil { return err } user.ActivateAccountToken = token user.ActivateAccountTokenExpireDate = util.NextDateFromNow(accountActivationTokenExpireTime) err = identity.UpdateUser(user) if err != nil { return err } go sendAccountActivationEmail(emailAddress, activationServiceLink, token) return nil }