diff --git a/controllers/tablerbase.go b/controllers/tablerbase.go index 767158e..d2086b5 100644 --- a/controllers/tablerbase.go +++ b/controllers/tablerbase.go @@ -225,6 +225,29 @@ func UserLock(c *core.Context) *core.Response { return c.Response.Template("apptabler_auth-lock.html", data) } +// AdminUsers renders the admin users listing page. +func AdminUsers(c *core.Context) *core.Response { + type adminUsersPageData struct { + TablerPageData + AdminUsers AdminUsersPage + } + data := adminUsersPageData{ + TablerPageData: TablerPageData{ + PageTitle: "Admin Users", + PageDescription: "Manage system users", + ShowTopbar: true, + Sidebar: false, + PageHeader: "Admin Users", + PagePretitle: "User Management", + UserName: "Jane Doe", + UserRole: "Administrator", + NavbarMenu: SampleNavbarMenu(), + }, + AdminUsers: SampleAdminUsers(), + } + return c.Response.Template("apptabler_admin-users.html", data) +} + // UserSettings renders the user settings page. func UserSettings(c *core.Context) *core.Response { type userSettingsPageData struct { @@ -242,7 +265,6 @@ func UserSettings(c *core.Context) *core.Response { UserName: "Jane Doe", UserRole: "Administrator", NavbarMenu: SampleNavbarMenu(), - Content: nil, }, UserSettings: SampleUserSettings(), } diff --git a/controllers/tablerdata.go b/controllers/tablerdata.go index 67c4dab..9936269 100644 --- a/controllers/tablerdata.go +++ b/controllers/tablerdata.go @@ -44,6 +44,20 @@ func SampleNavbarMenu() TablerMenu { } } +// SampleAdminUsers returns sample data for the admin users page. +func SampleAdminUsers() AdminUsersPage { + return AdminUsersPage{ + AddLink: "/admin/users/add", + Users: []AdminUserRow{ + {Name: "Paweł Kuna", Email: "pawel.kuna@example.com", Status: "Active", Roles: "Administrator, Editor", EditLink: "/admin/users/edit/1"}, + {Name: "Jane Doe", Email: "jane.doe@example.com", Status: "Active", Roles: "Editor", EditLink: "/admin/users/edit/2"}, + {Name: "Jeffie Lewzey", Email: "jlewzey@seesaa.net", Status: "Invited", Roles: "Viewer", EditLink: "/admin/users/edit/3"}, + {Name: "Mallory Hulme", Email: "mhulme@domainmarket.com", Status: "Active", Roles: "Administrator", EditLink: "/admin/users/edit/4"}, + {Name: "Dunn Slane", Email: "dslane@epa.gov", Status: "Inactive", Roles: "Editor, Viewer", EditLink: "/admin/users/edit/5"}, + }, + } +} + // SampleUserSettings returns sample data for the user settings page. func SampleUserSettings() FormtablerUserSettingsPage { return FormtablerUserSettingsPage{ diff --git a/controllers/tablertypes.go b/controllers/tablertypes.go index b3d3fb7..70a4510 100644 --- a/controllers/tablertypes.go +++ b/controllers/tablertypes.go @@ -500,6 +500,21 @@ type FormtablerUserSettingsPage struct { ActiveTab string } +// AdminUserRow represents a single user in the admin users list. +type AdminUserRow struct { + Name string + Email string + Status string // "Active", "Inactive", "Invited" + Roles string // comma-separated role names + EditLink string +} + +// AdminUsersPage holds the data for the admin users page. +type AdminUsersPage struct { + Users []AdminUserRow + AddLink string +} + // AuthLockPageData holds the data for the account lock page. type AuthLockPageData struct { PersonName string diff --git a/routes.go b/routes.go index 87dd158..a6441f6 100644 --- a/routes.go +++ b/routes.go @@ -36,8 +36,8 @@ func registerRoutes() { controller.Post("/reset-password/code/:code", controllers.SetNewPassword) // Uncomment the lines below to enable user administration - controller.Get("/admin/users", controllers.AdminUsersList) - controller.Post("/admin/users", controllers.AdminUsersList) + //controller.Get("/admin/users", controllers.AdminUsersList) + //controller.Post("/admin/users", controllers.AdminUsersList) controller.Get("/admin/users/add", controllers.AdminUsersAdd) controller.Post("/admin/users/add", controllers.AdminUsersAdd) controller.Get("/admin/users/edit/:id", controllers.AdminUsersEdit) @@ -80,9 +80,12 @@ func registerRoutes() { controller.Get("/user/settings", controllers.UserSettings) controller.Post("/user/settings", controllers.UserSettings) - controller.Get("/tablertable", controllers.TablerTables) - controller.Get("/tablerformelements", controllers.TablerFormElements) - controller.Get("/tablercards", controllers.TablerCards) - controller.Get("/tablercomponents", controllers.TablerComponents) + controller.Get("/admin/users", controllers.AdminUsers) + controller.Post("/admin/users", controllers.AdminUsers) + + controller.Get("/tablertable", controllers.TablerTables) + controller.Get("/tablerformelements", controllers.TablerFormElements) + controller.Get("/tablercards", controllers.TablerCards) + controller.Get("/tablercomponents", controllers.TablerComponents) } diff --git a/storage/templates/tabler/app/admin/apptabler_admin-users.html b/storage/templates/tabler/app/admin/apptabler_admin-users.html new file mode 100644 index 0000000..3738cdc --- /dev/null +++ b/storage/templates/tabler/app/admin/apptabler_admin-users.html @@ -0,0 +1,96 @@ +{{template "base_header" .}} +{{$admin := .AdminUsers}} +
| Name | +Status | +Roles | ++ | |
|---|---|---|---|---|
|
+
+
+
+
+
+ {{.Name}}
+ |
+ {{.Email}} | ++ {{if eq .Status "Active"}} + + {{else if eq .Status "Inactive"}} + + {{else if eq .Status "Invited"}} + + {{end}} + {{.Status}} + | +
+
+ {{range split ", " .Roles}}
+
+
+ {{.}}
+
+ {{end}}
+ |
+ + Edit + | +