public static RegisterAccountResult Succeeded(GametekiUser newUser) { return(new RegisterAccountResult { Success = true, User = newUser }); }
private static void PopulateApiUser(GametekiUser user, ApiUser apiUser) { apiUser.Id = user.Id; apiUser.Username = user.UserName; apiUser.Email = user.Email; apiUser.Settings = new ApiSettings { Background = user.Settings.Background, CardSize = user.Settings.CardSize }; apiUser.Permissions = new GametekiPermissions(); apiUser.CustomData = user.CustomData; foreach (var userRole in user.UserRoles) { switch (userRole.Role.Name) { case Roles.UserManager: apiUser.Permissions.CanManageUsers = true; break; case Roles.PermissionsManager: apiUser.Permissions.CanManagePermissions = true; break; case Roles.ChatManager: apiUser.Permissions.CanModerateChat = true; break; case Roles.GameManager: apiUser.Permissions.CanManageGames = true; break; case Roles.NewsManager: apiUser.Permissions.CanEditNews = true; break; case Roles.NodeManager: apiUser.Permissions.CanManageNodes = true; break; case Roles.Admin: apiUser.Permissions.IsAdmin = true; break; case Roles.Contributor: apiUser.Permissions.IsContributor = true; break; case Roles.Supporter: apiUser.Permissions.IsSupporter = true; break; } } }
public static ApiUser ToApiUser(this GametekiUser user) { if (user == null) { throw new ArgumentNullException(nameof(user)); } var apiUser = new ApiUser(); PopulateApiUser(user, apiUser); return(apiUser); }
public Task <bool> UpdatePermissionsAsync(GametekiUser user, GametekiPermissions newPermissions) { if (user == null) { throw new ArgumentNullException(nameof(user)); } if (newPermissions == null) { throw new ArgumentNullException(nameof(newPermissions)); } return(UpdatePermissionsInternalAsync(user, newPermissions)); }
public Task <bool> RemoveBlockListEntryAsync(GametekiUser user, string username) { if (user == null) { throw new ArgumentNullException(nameof(user)); } if (username == null) { throw new ArgumentNullException(nameof(username)); } return(RemoveBlockListEntryInternalAsync(username)); }
private async Task <bool> UpdatePermissionsInternalAsync(GametekiUser user, GametekiPermissions newPermissions) { var existingPermissions = user.ToApiUser().Permissions; var toAdd = new List <string>(); var toRemove = new List <string>(); ProcessPermission(newPermissions.CanEditNews, existingPermissions.CanEditNews, Roles.NewsManager, toRemove, toAdd); ProcessPermission(newPermissions.CanManageGames, existingPermissions.CanManageGames, Roles.GameManager, toRemove, toAdd); ProcessPermission(newPermissions.CanManageNodes, existingPermissions.CanManageNodes, Roles.NodeManager, toRemove, toAdd); ProcessPermission(newPermissions.CanManagePermissions, existingPermissions.CanManagePermissions, Roles.PermissionsManager, toRemove, toAdd); ProcessPermission(newPermissions.CanManageUsers, existingPermissions.CanManageUsers, Roles.UserManager, toRemove, toAdd); ProcessPermission(newPermissions.CanModerateChat, existingPermissions.CanModerateChat, Roles.ChatManager, toRemove, toAdd); ProcessPermission(newPermissions.IsSupporter, existingPermissions.IsSupporter, Roles.Supporter, toRemove, toAdd); ProcessPermission(newPermissions.IsContributor, existingPermissions.IsContributor, Roles.Contributor, toRemove, toAdd); ProcessPermission(newPermissions.IsAdmin, existingPermissions.IsAdmin, Roles.Admin, toRemove, toAdd); foreach (var roleToAdd in toAdd) { var role = await context.Roles.SingleOrDefaultAsync(r => r.Name == roleToAdd).ConfigureAwait(false); if (role == null) { continue; } user.UserRoles.Add(new GametekiUserRole { Role = role, User = user }); } foreach (var userRole in toRemove.Select(roleToRemove => user.UserRoles.Single(ur => ur.Role.Name == roleToRemove))) { user.UserRoles.Remove(userRole); } try { await context.SaveChangesAsync().ConfigureAwait(false); } catch (DbUpdateException exception) { #pragma warning disable CA1303 // Do not pass literals as localized parameters logger.LogError(exception, "Failed updating permissions"); #pragma warning restore CA1303 // Do not pass literals as localized parameters return(false); } return(true); }
public static ApiUserAdmin ToApiUserAdmin(this GametekiUser user) { if (user == null) { throw new ArgumentNullException(nameof(user)); } var adminUser = new ApiUserAdmin(); PopulateApiUser(user, adminUser); adminUser.Disabled = user.Disabled; // adminUser.Verified = user.EmailConfirmed; return(adminUser); }
private async Task <bool> AddBlockListEntryInternalAsync(GametekiUser user, string username) { var blockListEntry = new BlockListEntry { BlockedUser = username, UserId = user.Id }; try { context.BlockListEntry.Add(blockListEntry); await context.SaveChangesAsync().ConfigureAwait(false); } catch (DbUpdateException ex) { logger.LogError($"Error adding block list entry '{username}' for {user.UserName}", ex); return(false); } return(true); }
private string GenerateTokenForUser(GametekiUser user) { var claims = new List <Claim> { new Claim(ClaimTypes.Name, user.UserName) }; claims.AddRange(user.UserRoles.Select(ur => new Claim(ClaimTypes.Role, ur.Role.Name))); var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenOptions.Key)); var jwt = new JwtSecurityToken( tokenOptions.Issuer, tokenOptions.Issuer, claims, DateTime.UtcNow, DateTime.UtcNow.AddMinutes(5), new SigningCredentials(key, SecurityAlgorithms.HmacSha256)) { Payload = { ["UserData"] = user.ToApiUser() } }; return(new JwtSecurityTokenHandler().WriteToken(jwt)); }