using Astralis; using Inversion; using Spry.Authorisation; namespace Spry.Authentication { public class UserManagementComponent : Component { public int page_number { get; set; default = 0; } public string authorisation_permission { get; set; default = "spry.admin"; } public bool authorised { get; set; } public const int64 users_per_page = 20; public override string markup { get { return """
You must have the permission to access this content.
Page
"""; }} private UserService user_service = inject(); private AuthorisationContext authorisation_context = inject(); private ComponentFactory component_factory = inject(); public async override void prepare () throws Error { if(authorisation_context.is_anonymous() || !authorisation_context.has_permission (authorisation_permission)) { authorised = false; return; } authorised = true; var users = yield user_service.list_users (page_number * users_per_page, page_number * users_per_page + users_per_page); foreach (var user in users) { var component = component_factory.create(); component.user_id = (int)user.id; component.user = user; add_outlet_child ("outlet", component); } } public async override void handle_action(string action) { if(action == "previous") { page_number --; if(page_number < 0) { page_number = 0; } } if(action == "next") { page_number ++; } } } }