public async Task<SecurityResult> CreateAsync(ApplicationUserExtended user) { IdentityResult result = null; if (user != null) { var dbUser = user.ToDataModel(); using (var userManager = _userManagerFactory()) { if (string.IsNullOrEmpty(user.Password)) { result = await userManager.CreateAsync(dbUser); } else { result = await userManager.CreateAsync(dbUser, user.Password); } } if (result.Succeeded) { using (var repository = _platformRepository()) { var account = new AccountEntity { Id = dbUser.Id, UserName = user.UserName, MemberId = user.MemberId, AccountState = AccountState.Approved, RegisterType = (RegisterType)user.UserType, StoreId = user.StoreId }; if (user.Roles != null) { foreach (var role in user.Roles) { account.RoleAssignments.Add(new RoleAssignmentEntity { RoleId = role.Id, AccountId = account.Id }); } } repository.Add(account); repository.UnitOfWork.Commit(); } } } return result == null ? null : result.ToCoreModel(); }
public async Task<SecurityResult> CreateAsync(ApplicationUserExtended user) { IdentityResult result; if (user == null) { throw new ArgumentNullException("user"); } NormalizeUser(user); //Update ASP.NET indentity user using (var userManager = _userManagerFactory()) { var dbUser = user.ToIdentityModel(); user.Id = dbUser.Id; if (string.IsNullOrEmpty(user.Password)) { result = await userManager.CreateAsync(dbUser); } else { result = await userManager.CreateAsync(dbUser, user.Password); } } if (result.Succeeded) { using (var repository = _platformRepository()) { var dbAcount = user.ToDataModel(); if(string.IsNullOrEmpty(user.MemberId)) { //Use for memberId same account id if its not set (Our current case Contact member 1 - 1 Account workaround). But client may use memberId as for any outer id. dbAcount.MemberId = dbAcount.Id; } dbAcount.AccountState = AccountState.Approved.ToString(); repository.Add(dbAcount); repository.UnitOfWork.Commit(); } } return result.ToCoreModel(); }
public async Task<SecurityResult> UpdateAsync(ApplicationUserExtended user) { SecurityResult result; if (user == null) { throw new ArgumentNullException("user"); } NormalizeUser(user); //Update ASP.NET indentity user using (var userManager = _userManagerFactory()) { var dbUser = await userManager.FindByIdAsync(user.Id); result = ValidateUser(dbUser); if (result.Succeeded) { var userName = dbUser.UserName; //Update ASP.NET indentity user user.Patch(dbUser); var identityResult = await userManager.UpdateAsync(dbUser); result = identityResult.ToCoreModel(); //clear cache RemoveUserFromCache(user.Id, userName); } } if (result.Succeeded) { //Update platform security user using (var repository = _platformRepository()) { var targetDbAcount = repository.GetAccountByName(user.UserName, UserDetails.Full); if (targetDbAcount == null) { result = new SecurityResult { Errors = new[] { "Account not found." } }; } else { var changedDbAccount = user.ToDataModel(); using (var changeTracker = GetChangeTracker(repository)) { changeTracker.Attach(targetDbAcount); changedDbAccount.Patch(targetDbAcount); repository.UnitOfWork.Commit(); } } } } return result; }
public async Task<SecurityResult> CreateAsync(ApplicationUserExtended user) { IdentityResult result = null; if (user == null) { throw new ArgumentNullException("user"); } //Update ASP.NET indentity user using (var userManager = _userManagerFactory()) { var dbUser = user.ToIdentityModel(); user.Id = dbUser.Id; if (string.IsNullOrEmpty(user.Password)) { result = await userManager.CreateAsync(dbUser); } else { result = await userManager.CreateAsync(dbUser, user.Password); } } if (result.Succeeded) { using (var repository = _platformRepository()) { var dbAcount = user.ToDataModel(); dbAcount.AccountState = AccountState.Approved.ToString(); repository.Add(dbAcount); repository.UnitOfWork.Commit(); } } return result == null ? null : result.ToCoreModel(); }