public async Task <APIResponseModel> Process(InternalSendEmailVerificationAction action) { var rsU = await this.DataManager.QueryUser(action.UserId); if (rsU.Code != ResponseCode.Ok) { return(APIResponseModel.Result(rsU.ToResponse())); } var user = rsU.Data[0].User; if (user == null) { return(APIResponseModel.Error(ResponseCode.NotFound)); } if (user.EmailVerification == null) { return(APIResponseModel.Success()); } string vs = await this.PasswordManager.BuildEmailVerificationString(user.UserId, user.EmailVerification.Code); var url = this.EmailProvider.BaseUrl() + "verify?code=" + Uri.EscapeDataString(vs); var cd = new Dictionary <string, string> { { "EmailVerificationUrl", url }, { "DisplayName", user.DisplayName } }; var rs = await this.EmailProvider.ProcessTemplate(action.UserId, EmailTemplateId.EmailVerification, user.Email, cd, user); return(APIResponseModel.Result(rs)); }
public async Task <APIResponseModel> Process(SampleUser userContext, UserUpdatePasswordAction action) { UserModel user = userContext.OBO != null ? userContext.OBO : userContext.SiteUser; if (string.IsNullOrWhiteSpace(action.NewPassword)) { return(APIResponseModel.Error(ResponseCode.InvalidParameter, "Password")); } var passwordStrength = new PasswordStrengthValidator().Test(action.NewPassword); if (!passwordStrength.Good) { return(APIResponseModel.Error(ResponseCode.InvalidParameter, "Password Strength")); } if (!(await this.PasswordManager.Verify(action.OldPassword, user.Password.Hash))) { return(APIResponseModel.Error(ResponseCode.InvalidCredentials)); } else { var pwd = new UserPasswordModel(await this.PasswordManager.CreatePasswordHash(action.NewPassword)); var rs = await this.DataManager.UpdateEntityProperty(EntityTableType.user, UserEntity.UpdatePasswordBuilder(user.UserId, pwd, PasswordMode.UpdatePassword)); if (rs.Code != ResponseCode.Ok) { return(APIResponseModel.Error(rs.Code, rs.Message)); } } this.DataManager.WriteEvent("user-password-updated", action); // don't await - fire & forget return(APIResponseModel.Success()); }
public async Task <APIResponseModel> Process(SampleUser userContext, UserUpdateDisplayNameAction action) { UserModel user = userContext.OBO != null ? userContext.OBO : userContext.SiteUser; var dte = UserEntity.UpdateDisplayName(user.UserId, action.DisplayName); var rs = await this.DataManager.UpdateEntityProperty(EntityTableType.user, dte); if (rs.Code != ResponseCode.Ok) { return(APIResponseModel.Error(rs.Code, rs.Message)); } return(APIResponseModel.Success()); }