func ActivateMfa(userId, token string) *model.AppError { mfaInterface := einterfaces.GetMfaInterface() if mfaInterface == nil { err := model.NewLocAppError("ActivateMfa", "api.user.update_mfa.not_available.app_error", nil, "") err.StatusCode = http.StatusNotImplemented return err } var user *model.User if result := <-Srv.Store.User().Get(userId); result.Err != nil { return result.Err } else { user = result.Data.(*model.User) } if len(user.AuthService) > 0 && user.AuthService != model.USER_AUTH_SERVICE_LDAP { return model.NewLocAppError("ActivateMfa", "api.user.activate_mfa.email_and_ldap_only.app_error", nil, "") } if err := mfaInterface.Activate(user, token); err != nil { return err } return nil }
func DeactivateMfa(userId string) *model.AppError { mfaInterface := einterfaces.GetMfaInterface() if mfaInterface == nil { err := model.NewLocAppError("DeactivateMfa", "api.user.update_mfa.not_available.app_error", nil, "") err.StatusCode = http.StatusNotImplemented return err } if err := mfaInterface.Deactivate(userId); err != nil { return err } return nil }
func checkUserMfa(user *model.User, token string) *model.AppError { if !user.MfaActive || !utils.IsLicensed || !*utils.License.Features.MFA || !*utils.Cfg.ServiceSettings.EnableMultifactorAuthentication { return nil } mfaInterface := einterfaces.GetMfaInterface() if mfaInterface == nil { return model.NewLocAppError("checkUserMfa", "api.user.check_user_mfa.not_available.app_error", nil, "") } if ok, err := mfaInterface.ValidateToken(user.MfaSecret, token); err != nil { return err } else if !ok { return model.NewLocAppError("checkUserMfa", "api.user.check_user_mfa.bad_code.app_error", nil, "") } return nil }