45 lines
1.1 KiB
Markdown
45 lines
1.1 KiB
Markdown
# Based
|
|
Based is a micro framework providing web dev primitives.
|
|
|
|
## Features
|
|
- User Auth
|
|
- PostgresDB Connection
|
|
- Logging
|
|
- Request Contexts
|
|
- Templates (Shell)
|
|
|
|
## User Auth
|
|
To use the user auth feature, make sure a migration has added the following to your PostgresDB:
|
|
|
|
```sql
|
|
CREATE TYPE user_role AS ENUM ('regular', 'admin');
|
|
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
username VARCHAR(255) NOT NULL PRIMARY KEY,
|
|
"password" text NOT NULL,
|
|
user_role user_role NOT NULL DEFAULT 'regular'
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS user_session (
|
|
id UUID NOT NULL PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
token text NOT NULL,
|
|
"user" varchar(255) NOT NULL,
|
|
FOREIGN KEY("user") REFERENCES users(username)
|
|
);
|
|
```
|
|
|
|
## HTMX
|
|
Based has a route for serving HTMX at `based::htmx::htmx_script_route` which you can include in your rocket `routes!`. The HTMX script will be available at `/assets/htmx.min.js`.
|
|
|
|
Additionally you can check if a requests originates from HTMX:
|
|
|
|
```rs
|
|
#[get("/")]
|
|
pub async fn index(ctx: RequestContext) -> StringRespopnse {
|
|
if ctx.is_htmx {
|
|
...
|
|
} else {
|
|
...
|
|
}
|
|
}
|
|
```
|