feat: add admin user management with role-based access and self-protection
- Add AdminRequired middleware for admin-role routes - Add login status check to reject disabled/locked accounts - Add CRUD handlers (list, create, edit, delete) for users - Add user_list and user_form templates with role/status badges - Add nav entry and dashboard button for user management - Add dynamic user count on admin dashboard - Fix userIDFromSession to handle all numeric session types - Self-protection: cannot delete/disable self or demote last admin - Add EN/ZH i18n keys for all user management strings
This commit is contained in:
@@ -269,6 +269,48 @@ var translations = map[Lang]map[string]string{
|
||||
"comment_settings_guest_approval": "Require approval for guest comments",
|
||||
"comment_settings_use_gravatar": "Use Gravatar avatars",
|
||||
"comment_settings_use_gravatar_hint": "When off, avatars show the author's initial on a colored background.",
|
||||
|
||||
// Admin: user management
|
||||
"admin_users": "Users",
|
||||
"admin_users_title": "Users",
|
||||
"user_list_title": "User Management",
|
||||
"user_new": "New User",
|
||||
"user_create_title": "Create User",
|
||||
"user_edit_title": "Edit User",
|
||||
"user_col_username": "Username",
|
||||
"user_col_display": "Display Name",
|
||||
"user_col_email": "Email",
|
||||
"user_col_role": "Role",
|
||||
"user_col_status": "Status",
|
||||
"user_col_created": "Created",
|
||||
"user_col_actions": "Actions",
|
||||
"user_username": "Username",
|
||||
"user_password": "Password",
|
||||
"user_password_hint": "Leave blank to keep the current password.",
|
||||
"user_display_name": "Display Name",
|
||||
"user_email": "Email",
|
||||
"user_gender": "Gender",
|
||||
"user_birthday": "Birthday",
|
||||
"user_role": "Role",
|
||||
"user_status": "Status",
|
||||
"role_admin": "Admin",
|
||||
"role_author": "Author",
|
||||
"status_normal": "Normal",
|
||||
"status_disabled": "Disabled",
|
||||
"status_locked": "Locked",
|
||||
"status_unactivated": "Unactivated",
|
||||
"user_created": "User created.",
|
||||
"user_updated": "User updated.",
|
||||
"user_deleted": "User deleted.",
|
||||
"user_delete_confirm": "Delete this user?",
|
||||
"user_empty": "No users.",
|
||||
"user_username_required": "Username is required.",
|
||||
"user_password_required": "Password is required.",
|
||||
"user_username_exists": "Username already exists.",
|
||||
"user_cannot_delete_self": "You cannot delete your own account.",
|
||||
"user_cannot_disable_self": "You cannot disable or lock your own account.",
|
||||
"user_cannot_remove_last_admin": "Cannot remove the last administrator.",
|
||||
"dash_user_mgmt": "Manage Users",
|
||||
},
|
||||
ZH: {
|
||||
// 导航
|
||||
@@ -523,6 +565,48 @@ var translations = map[Lang]map[string]string{
|
||||
"comment_settings_guest_approval": "非登录用户评论需审核",
|
||||
"comment_settings_use_gravatar": "使用 Gravatar 头像",
|
||||
"comment_settings_use_gravatar_hint": "关闭后,头像将显示作者名称首字母的彩色占位。",
|
||||
|
||||
// 后台:用户管理
|
||||
"admin_users": "用户",
|
||||
"admin_users_title": "用户",
|
||||
"user_list_title": "用户管理",
|
||||
"user_new": "新建用户",
|
||||
"user_create_title": "新建用户",
|
||||
"user_edit_title": "编辑用户",
|
||||
"user_col_username": "用户名",
|
||||
"user_col_display": "显示名称",
|
||||
"user_col_email": "邮箱",
|
||||
"user_col_role": "角色",
|
||||
"user_col_status": "状态",
|
||||
"user_col_created": "创建时间",
|
||||
"user_col_actions": "操作",
|
||||
"user_username": "用户名",
|
||||
"user_password": "密码",
|
||||
"user_password_hint": "留空则保持原密码不变。",
|
||||
"user_display_name": "显示名称",
|
||||
"user_email": "邮箱",
|
||||
"user_gender": "性别",
|
||||
"user_birthday": "生日",
|
||||
"user_role": "角色",
|
||||
"user_status": "状态",
|
||||
"role_admin": "管理员",
|
||||
"role_author": "作者",
|
||||
"status_normal": "正常",
|
||||
"status_disabled": "禁用",
|
||||
"status_locked": "锁定",
|
||||
"status_unactivated": "未激活",
|
||||
"user_created": "用户已创建。",
|
||||
"user_updated": "用户已更新。",
|
||||
"user_deleted": "用户已删除。",
|
||||
"user_delete_confirm": "确认删除该用户?",
|
||||
"user_empty": "暂无用户。",
|
||||
"user_username_required": "请填写用户名。",
|
||||
"user_password_required": "请填写密码。",
|
||||
"user_username_exists": "用户名已存在。",
|
||||
"user_cannot_delete_self": "不能删除自己的账号。",
|
||||
"user_cannot_disable_self": "不能禁用或锁定自己的账号。",
|
||||
"user_cannot_remove_last_admin": "不能移除最后一个管理员。",
|
||||
"dash_user_mgmt": "用户管理",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user