public void CreateOrUpdateAccount(ClaimsIdentity claimsIdentity, AccountDto accountInfo) { var loginData = _loginDataParser.Parse(claimsIdentity); var customizationModes = CustomizationModes.None; var userAccount = _userAccountService.GetByEmail(loginData.Email); if (userAccount == null) { var claims = new List<Claim> { new Claim(CustomClaims.CustomizationModes, ((int)customizationModes).ToString(CultureInfo.InvariantCulture)) }; userAccount = _userAccountService.CreateAccount(accountInfo.Email, Guid.NewGuid().ToString(), accountInfo.Email, claims: claims); } else { var modesString = userAccount.Claims.First(x => x.Type == CustomClaims.CustomizationModes).Value; customizationModes = BuildModes(modesString, accountInfo); var claims = new List<Claim> { new Claim(CustomClaims.CustomizationModes, ((int) customizationModes).ToString(CultureInfo.InvariantCulture)) }; _userAccountService.UpdateClaims(userAccount.ID, claims); } _userAccountService.AddOrUpdateLinkedAccount(userAccount, loginData.ProviderName, loginData.ProviderKey, claimsIdentity.Claims); }
public dynamic CreateAccount([ParameterRequired] CreateAccountViewModel account) { var accountInfo = new AccountDto() { Email = account.Email, Name = account.Name, CustomizationEnabled = account.CustomizationEnabled }; _accountManagementService.CreateOrUpdateAccount((ClaimsIdentity)User.Identity, accountInfo); return Request.CreateResponse(HttpStatusCode.OK); }
private CustomizationModes BuildModes(string currentModes, AccountDto accountInfo) { var customizationModes = (CustomizationModes)int.Parse(currentModes); if (accountInfo.CustomizationEnabled) { customizationModes |= CustomizationModes.General; } else { customizationModes &= ~CustomizationModes.General; } return customizationModes; }