using System; using System.Collections.Generic; namespace Nibriboard.Userspace { public class UserManager { public List Users { get; private set; } = new List(); public List Permissions { get; private set; } = new List(); public List Roles { get; private set; } = new List(); public UserManager() { Permissions.AddRange(new RbacPermission[] { new RbacPermission("view-public-plane", "View public planes"), new RbacPermission("view-own-plane", "View your own planes."), new RbacPermission("view-any-plane", "View anyone's planes."), new RbacPermission("create-plane", "Create a new plane."), new RbacPermission("delete-own-plane", "Delete a plane."), new RbacPermission("delete-any-plane", "Delete a plane."), new RbacPermission("manage-own-plane-members", "Manage the users allowed to access one of your planes."), new RbacPermission("manage-any-plane-members", "Manage the users allowed to access one any plane.") }); Roles.Add(new RbacRole("Guest", new List() { GetPermission("view-public-plane") })); Roles.Add(new RbacRole("Member", new List() { GetPermission("view-own-plane"), GetPermission("create-plane"), GetPermission("delete-own-plane"), GetPermission("manage-own-plane-members") }, new List() { GetRole("Guest") })); Roles.Add(new RbacRole("Root", new List() { GetPermission("view-any-plane"), GetPermission("delete-any-plane"), GetPermission("manage-any-plane-members") }, new List() { GetRole("Member") })); } public RbacPermission GetPermission(string permissionName) { return Permissions.Find((RbacPermission permission) => permission.Name == permissionName); } public RbacRole GetRole(string roleName) { return Roles.Find((RbacRole role) => role.Name == roleName); } } }