Overview
POS Kasir implements a comprehensive user management system with three distinct roles: Admin, Manager, and Cashier. The system supports full CRUD operations, user status management, and avatar uploads.User Roles
internal/common/middleware/role.go:9-19
Role Hierarchy
- Admin (Level 3): Full system access, can manage all users and settings
- Manager (Level 2): Can manage products, view reports, manage cashiers
- Cashier (Level 1): Can process orders and view assigned transactions
User Operations
Create User
Admins can create new users with specific roles. Endpoint:POST /users
Required Role: Admin
internal/user/user_handler.go:158-217
List Users
Retrieve paginated list of users with filtering and search. Endpoint:GET /users
Required Role: Admin, Manager, Cashier
internal/user/user_handler.go:89-156
page- Page number (default: 1)limit- Items per page (default: 10)search- Search by username or emailrole- Filter by role (admin, manager, cashier)is_active- Filter by active status (true/false)status- Filter by account status (active, deleted, all)sortBy- Sort column (created_at, username)sortOrder- Sort direction (asc, desc)
Get User by ID
Endpoint:GET /users/{id}
Required Role: Admin, Manager
internal/user/user_handler.go:219-270
Update User
Endpoint:PUT /users/{id}
Required Role: Admin
internal/user/user_handler.go:272-364
Toggle User Status
Toggle a user’s active/inactive status. Endpoint:POST /users/{id}/toggle-status
Required Role: Admin
internal/user/user_handler.go:366-420
Delete User
Endpoint:DELETE /users/{id}
Required Role: Admin
internal/user/user_handler.go:38-87
Avatar Management
Users can upload and update their profile pictures. Endpoint:PUT /auth/me/avatar
Required Role: Authenticated
internal/user/auth_handler.go:401-515
Avatar Upload Service
internal/user/auth_service.go:139-214
- Maximum file size: 3MB
- Supported formats: JPEG, PNG
- Image must be square (same width and height)
- Minimum dimensions: 300x300 pixels
- Images are automatically converted to JPEG with 75% quality
Data Transfer Objects
internal/user/dto.go:63-76
Best Practices
- Role Assignment - Only admins should be able to assign or change user roles
- Password Requirements - Enforce minimum 6 characters for passwords
- Unique Constraints - Validate username and email uniqueness before creation
- Soft Delete - Consider using soft deletes for audit trail purposes
- Activity Logging - Log all user management operations for security audits
- Avatar Validation - Always validate image dimensions and file size before upload