public async Task <bool> CreateUserIfNotExists(string username, string password, params string[] permissions) { var exists = await _securityRepository.Exists <ApplicationUser>(u => u.UserName == username); if (exists) { Log(true, nameof(ApplicationUser), username); } else { Log(false, nameof(ApplicationUser), username); var user = CreateUser(username, password, false); await _securityRepository.AddUser(user); var permissionsToAdd = AppendPermissionsDistinct(permissions, IdentityScopes); var claims = permissionsToAdd.Select(permission => CreateClaim("permission", permission)).ToList(); claims.Add(CreateClaim("subject", user.UserName)); foreach (var claim in claims) { claim.UserId = user.Id; await _securityRepository.AddClaim(claim); } } return(true); }