public async Task <RepositoryResponse <MixUserViewModel> > SaveMyProfile( [FromBody] MixUserViewModel model) { var result = new RepositoryResponse <MixUserViewModel>() { IsSucceed = true }; string id = User.Claims.SingleOrDefault(c => c.Type == "Id")?.Value; if (model != null) { if (id != model.Id) { result.IsSucceed = false; result.Errors.Add("Invalid request"); return(result); } var user = await _userManager.FindByIdAsync(model.Id); user.Email = model.Email; user.FirstName = model.FirstName; user.LastName = model.LastName; var updInfo = await _userManager.UpdateAsync(user); result.IsSucceed = updInfo.Succeeded; if (result.IsSucceed) { var saveData = await Mix.Cms.Lib.ViewModels.MixDatabaseDatas.Helper.SaveObjAsync( MixDatabaseNames.SYSTEM_USER_DATA, model.UserData, user.UserName, MixDatabaseParentType.User); result.IsSucceed = saveData.IsSucceed; result.Errors = saveData.Errors; result.Exception = saveData.Exception; } if (result.IsSucceed && model.IsChangePassword) { var changePwd = await _userManager.ChangePasswordAsync(user, model.ChangePassword.CurrentPassword, model.ChangePassword.NewPassword); if (!changePwd.Succeeded) { foreach (var err in changePwd.Errors) { result.Errors.Add(err.Description); } } else { // Remove other token if change password success var refreshToken = User.Claims.SingleOrDefault(c => c.Type == "RefreshToken")?.Value; await RefreshTokenViewModel.Repository.RemoveModelAsync(r => r.Id != refreshToken); } } MixFileRepository.Instance.EmptyFolder($"{MixFolders.MixCacheFolder}/Mix/Cms/Lib/ViewModels/Account/MixUsers/_{model.Id}"); return(result); } return(result); }
public async Task <RepositoryResponse <MixUserViewModel> > Save( [FromBody] MixUserViewModel model) { var result = new RepositoryResponse <MixUserViewModel>() { IsSucceed = true }; if (model != null && model.User != null) { var user = await _userManager.FindByIdAsync(model.User.Id); user.Email = model.User.Email; user.FirstName = model.User.FirstName; user.LastName = model.User.LastName; user.Avatar = model.User.Avatar; var updInfo = await _userManager.UpdateAsync(user); result.IsSucceed = updInfo.Succeeded; if (result.IsSucceed) { var saveData = await model.UserData.SaveModelAsync(true); result.IsSucceed = saveData.IsSucceed; result.Errors = saveData.Errors; result.Exception = saveData.Exception; } if (result.IsSucceed && model.IsChangePassword) { var changePwd = await _userManager.ChangePasswordAsync(model.User, model.ChangePassword.CurrentPassword, model.ChangePassword.NewPassword); if (!changePwd.Succeeded) { foreach (var err in changePwd.Errors) { result.Errors.Add(err.Description); } } else { // Remove other token if change password success var refreshToken = User.Claims.SingleOrDefault(c => c.Type == "RefreshToken")?.Value; await RefreshTokenViewModel.Repository.RemoveModelAsync(r => r.Id != refreshToken); } } MixFileRepository.Instance.EmptyFolder($"{MixFolders.MixCacheFolder}/Mix/Cms/Lib/ViewModels/Account/MixUsers/_{model.User.Id}"); return(result); } return(result); }
public async Task <ActionResult <MixUserViewModel> > MyProfile() { string id = User.Claims.SingleOrDefault(c => c.Type == "Id")?.Value; ApplicationUser user = await _userManager.FindByIdAsync(id);; if (user != null) { var mixUser = new MixUserViewModel(user); await mixUser.LoadUserDataAsync(); return(Ok(new RepositoryResponse <MixUserViewModel>() { IsSucceed = true, Data = mixUser })); } return(BadRequest()); }
public async Task <ActionResult> Details(string viewType, string id = null) { ApplicationUser user = string.IsNullOrEmpty(id) ? new ApplicationUser() : await _userManager.FindByIdAsync(id);; if (user != null) { var mixUser = new MixUserViewModel(user); await mixUser.LoadUserDataAsync(); return(Ok(new RepositoryResponse <MixUserViewModel>() { IsSucceed = true, Data = mixUser })); } return(BadRequest()); }