public ClaimsIdentityDTO GetDTOFromUser(ApplicationUser user) { Mapper.Initialize(cfg => { cfg.CreateMap <ApplicationUser, ClaimsIdentityDTO>(); cfg.CreateMap <RoleClaim, ClaimDTO>(); cfg.CreateMap <Institution, InstitutionDTO>(); }); ClaimsIdentityDTO result = Mapper.Map <ClaimsIdentityDTO>(user); result.Claims = _accountService.GetClaimsDictionaryByUser(user); return(result); }
public async Task <ClaimsIdentityDTO> SaveUser(ClaimsIdentityDTO claimsDTO) { var applicationUser = string.IsNullOrEmpty(claimsDTO.Id) ? new ApplicationUser() : _accountService.GetById(claimsDTO.Id); var mapper = new MapperConfiguration(cfg => { cfg.CreateMap <ClaimsIdentityDTO, ApplicationUser>().ForMember(dest => dest.Subscriptions, opt => opt.UseValue <IList <InstitutionDTO> >(null)).ForMember(dest => dest.Claims, opt => opt.Ignore()); }).CreateMapper(); mapper.Map(claimsDTO, applicationUser); applicationUser.UserName = claimsDTO.Email; bool sendConfirmationEmail = false; IdentityResult result = null; if (string.IsNullOrEmpty(applicationUser.Id)) { applicationUser.Id = Guid.NewGuid().ToString(); result = await((ApplicationUserService)_accountService.UserService).CreateAsync(applicationUser, claimsDTO.Password); if (!result.Succeeded) { throw new Exception(result.Errors.ToString()); } ((ApplicationUserService)_accountService.UserService).AddToRole(applicationUser.Id, "User"); sendConfirmationEmail = true; } applicationUser.Subscriptions.Clear(); if (claimsDTO.SubscriptionType == "SELECTED") { foreach (InstitutionDTO inst in claimsDTO.Subscriptions) { Institution currentInstitution = _institutionService.GetById(inst.Id); if (currentInstitution == null) { continue; } if (!applicationUser.Subscriptions.Contains(currentInstitution)) { applicationUser.Subscriptions.Add(currentInstitution); } } } int x = _accountService.Save(); var resultDTO = GetDTOFromUser(applicationUser); if (sendConfirmationEmail) { await this.SendConfirmEmail(resultDTO); } return(resultDTO); }
public async Task <object> SendResetPassword([FromBody] ClaimsIdentityDTO userModel) { ApplicationUser user = await UserManager.FindByEmailAsync(userModel.Email); if (user == null) { return new { error = true, message = "email_not_found" } } ; Dictionary <string, string> replacements = new Dictionary <string, string>(); replacements.Add("LINK", "/reset-password/" + HttpContext.Current.Server.UrlEncode(user.Id) + "?token=" + HttpUtility.UrlEncode(this.UserManager.GeneratePasswordResetToken(user.Id))); replacements.Add("FULLNAME", user.FirstName + " " + user.LastName); Notification not = _notificationSevice.ConstructNotification("email.reset-password.subject", "email.masterTemplate", "email.reset-password.body", "email.defaultFrom", replacements); not.To = user.Email; this._notificationSevice.AddNotification(not); return(new { result = "success", message = "email_sent" }); }