Update all library API request files to the current Bruno format with proper settings blocks, updated sequence numbers, and cleaner YAML formatting. Add NewDevDBSetup collection with requests for creating comic, ebook, and manga libraries, user registration, and folder configuration to speed up development environment setup.
99 lines
2.9 KiB
YAML
99 lines
2.9 KiB
YAML
info:
|
|
name: RegisterUser
|
|
type: http
|
|
seq: 2
|
|
|
|
http:
|
|
method: POST
|
|
url: "{{base_url}}/api/auth/register"
|
|
body:
|
|
type: json
|
|
data: |-
|
|
{
|
|
"username": "testuser",
|
|
"email": "testuser@tests.bookhoard.internal",
|
|
"password": "Test@Pass123!",
|
|
"first_name": "Test",
|
|
"last_name": "User"
|
|
}
|
|
auth: inherit
|
|
|
|
runtime:
|
|
scripts:
|
|
- type: after-response
|
|
code: |-
|
|
function onResponse(res) {
|
|
try {
|
|
const responseBody = res.getBody();
|
|
const token = responseBody.access_token;
|
|
const refreshToken = responseBody.refresh_token;
|
|
|
|
if (token) {
|
|
bru.setEnvVar("token", token, { persist: true });
|
|
console.log("Access token saved:", token);
|
|
}
|
|
|
|
if (refreshToken) {
|
|
bru.setEnvVar("refresh_token", refreshToken, { persist: true });
|
|
console.log("Refresh token saved:", refreshToken);
|
|
}
|
|
|
|
if (!token && !refreshToken) {
|
|
console.log("No tokens found in response.");
|
|
}
|
|
} catch (error) {
|
|
console.error("Error in post-response script:", error.message);
|
|
}
|
|
}
|
|
onResponse(res);
|
|
|
|
settings:
|
|
encodeUrl: true
|
|
timeout: 0
|
|
followRedirects: true
|
|
maxRedirects: 5
|
|
|
|
docs: |-
|
|
## Register User
|
|
|
|
Creates a new user account with role-based restrictions.
|
|
|
|
**Method:** POST
|
|
|
|
**Endpoint:** /api/auth/register
|
|
|
|
**Request Body:**
|
|
- `email` (string): Email address
|
|
- `username` (string): Username
|
|
- `password` (string): Password
|
|
- `first_name` (string, optional): First name
|
|
- `last_name` (string, optional): Last name
|
|
- `role` (string): User role ("user" or "admin")
|
|
|
|
**Response:**
|
|
- `token` (string): JWT token
|
|
- `user` (object): User details
|
|
- `id` (string): User ID
|
|
- `email` (string): Email
|
|
- `username` (string): Username
|
|
- `theme` (string): User theme preference
|
|
- `first_name` (string, optional): First name
|
|
- `last_name` (string, optional): Last name
|
|
- `role` (string): User role ("user" or "admin")
|
|
|
|
**Status Codes:**
|
|
- 201: Created
|
|
- 400: Invalid input data
|
|
- 403: Forbidden - role-based restrictions apply
|
|
- 409: User exists
|
|
|
|
**Role Restrictions:**
|
|
- **First User**: Automatically gets admin role regardless of request
|
|
- **Existing Admins Present**: Only authenticated admins can create new admin accounts
|
|
- **No Admins Yet**: Anyone can create first admin (auto-assigned)
|
|
- **Regular User Creation**: Anyone can create regular user accounts
|
|
- **Unauthenticated Users**: Can only create first admin, not subsequent admins
|
|
|
|
**Examples:**
|
|
- First admin creation: `{"email": "admin@example.com", "username": "admin", "password": "password123", "role": "admin"
|