Skip to main content

Auth & Users

Authentication, session management, and admin user CRUD.

AuthController​

  • Route prefix: api/auth
  • Auth: [Authorize] except where noted
MethodPathDescriptionRequestResponse
POST/loginObtain access and refresh tokens (anonymous){ username, password }{ accessToken, refreshToken, expiresAt }
POST/refreshRotate access token using refresh token (anonymous){ refreshToken }{ accessToken, refreshToken, expiresAt }
POST/logoutInvalidate current refresh token
GET/meCurrent user info from token claims{ username, role, userId, displayName }
POST/change-passwordChange current user's password{ currentPassword, newPassword }{ message }

UserController​

Admin CRUD for panel users. Separate from in-game players.

  • Route prefix: api/users
  • Auth: All endpoints require admin role.
MethodPathDescriptionRequestResponse
GET/List all panel usersUserResponse[]
GET/{id}Get single userUserResponse
POST/Create user{ username, password, displayName, role }UserResponse
PUT/{id}Update display name / role / active status{ displayName, role, isActive }UserResponse
POST/{id}/reset-passwordReset another user's password{ newPassword }string
DELETE/{id}Soft-delete (deactivate) userstring

Notes​

  • Passwords are hashed with BCrypt before storage. Plaintext is never persisted.
  • UserResponse includes { id, username, displayName, role, isActive, createdAt, lastLoginAt }.
  • Deleting a user is a soft delete that flips isActive to false; the row stays for audit purposes.