Compare commits
2 Commits
dc907bcb07
...
bc610ef22a
Author | SHA1 | Date |
---|---|---|
antifallobst | bc610ef22a | |
antifallobst | 2d12303bbc |
|
@ -1,43 +1,62 @@
|
||||||
# `/account/tokens` - GET
|
# `/account/tokens` - GET
|
||||||
|
|
||||||
Lists all active auth tokens for the account.
|
Lists all active auth tokens for the account.
|
||||||
|
|
||||||
## HTTP Headers
|
## HTTP Headers
|
||||||
| Header | Content |
|
|
||||||
|---------------|--------------------|
|
| Header | Content |
|
||||||
| Authorization | `Bearer {token}` |
|
|---------------|------------------|
|
||||||
|
| Authorization | `Bearer {token}` |
|
||||||
|
|
||||||
## Responses
|
## Responses
|
||||||
|
|
||||||
### 200 - Success
|
### 200 - Success
|
||||||
|
|
||||||
__Content - JSON:__
|
__Content - JSON:__
|
||||||
|
|
||||||
| Field | Description |
|
| Field | Description |
|
||||||
|--------|-------------------------------------------------------------------------------------------------|
|
|--------|-------------------------------------------------------------------------------------------------|
|
||||||
| tokens | A list of (token, expiration date) pairs. The expiration date is given as a UTC UNIX timestamp. |
|
| tokens | A list of (token, expiration date) pairs. The expiration date is given as a UTC UNIX timestamp. |
|
||||||
|
|
||||||
### 401 - Error: Unauthorized
|
### 401 - Error: Unauthorized
|
||||||
|
|
||||||
The provided auth token doesn't allow you to perform this operation.
|
The provided auth token doesn't allow you to perform this operation.
|
||||||
|
|
||||||
### 403 - Error: Forbidden
|
### 403 - Error: Forbidden
|
||||||
|
|
||||||
Blocked for security reasons.
|
Blocked for security reasons.
|
||||||
|
|
||||||
|
|
||||||
# `/account/tokens` - DELETE
|
# `/account/tokens` - DELETE
|
||||||
|
|
||||||
Deletes a token of the authenticated account.
|
Deletes a token of the authenticated account.
|
||||||
|
|
||||||
## HTTP Headers
|
## HTTP Headers
|
||||||
|
|
||||||
| Header | Content |
|
| Header | Content |
|
||||||
|---------------|--------------------|
|
|---------------|--------------------|
|
||||||
| Authorization | `Bearer {token}` |
|
| Authorization | `Bearer {token}` |
|
||||||
| Content-Type | `application/json` |
|
| Content-Type | `application/json` |
|
||||||
|
|
||||||
## Content - JSON
|
## Content - JSON
|
||||||
|
|
||||||
| Field | Description |
|
| Field | Description |
|
||||||
|-------|-----------------------------------|
|
|-------|-----------------------------------|
|
||||||
| token | The token that should be deleted. |
|
| token | The token that should be deleted. |
|
||||||
|
|
||||||
## Responses
|
## Responses
|
||||||
|
|
||||||
### 200 - Success
|
### 200 - Success
|
||||||
|
|
||||||
The token was deleted.
|
The token was deleted.
|
||||||
|
|
||||||
### 401 - Error: Unauthorized
|
### 401 - Error: Unauthorized
|
||||||
|
|
||||||
The provided auth token doesn't allow you to perform this operation.
|
The provided auth token doesn't allow you to perform this operation.
|
||||||
|
|
||||||
### 403 - Error: Forbidden
|
### 403 - Error: Forbidden
|
||||||
|
|
||||||
Blocked for security reasons.
|
Blocked for security reasons.
|
||||||
|
|
||||||
### 404 - Error: Not Found
|
### 404 - Error: Not Found
|
||||||
|
|
||||||
The token that should be deleted wasn't found.
|
The token that should be deleted wasn't found.
|
|
@ -1,22 +1,37 @@
|
||||||
# `/account/verify` - POST
|
# `/account/verify` - POST
|
||||||
|
|
||||||
Verifies a requested account.
|
Verifies a requested account.
|
||||||
|
|
||||||
## HTTP Headers
|
## HTTP Headers
|
||||||
|
|
||||||
| Header | Content |
|
| Header | Content |
|
||||||
|--------------|--------------------|
|
|--------------|--------------------|
|
||||||
| Content-Type | `application/json` |
|
| Content-Type | `application/json` |
|
||||||
|
|
||||||
## Content - JSON
|
## Content - JSON
|
||||||
|
|
||||||
| Field | Description |
|
| Field | Description |
|
||||||
|-------|--------------------------------------------------------------------------------|
|
|-------|--------------------------------------------------------------------------------|
|
||||||
| token | The verification token you received via an email after requesting the account. |
|
| token | The verification token you received via an email after requesting the account. |
|
||||||
|
|
||||||
## Responses
|
## Responses
|
||||||
|
|
||||||
### 200 - Success
|
### 200 - Success
|
||||||
The account was verified. You can login now.
|
|
||||||
|
The account was verified.
|
||||||
|
|
||||||
|
| Field | Description |
|
||||||
|
|-------|--------------------------------------------------|
|
||||||
|
| token | An authorization token for the verified account. |
|
||||||
|
|
||||||
### 400 - Error: Bad Request
|
### 400 - Error: Bad Request
|
||||||
|
|
||||||
The request was malformed.
|
The request was malformed.
|
||||||
|
|
||||||
### 403 - Error: Forbidden
|
### 403 - Error: Forbidden
|
||||||
|
|
||||||
Blocked for security reasons.
|
Blocked for security reasons.
|
||||||
|
|
||||||
### 404 - Error: Forbidden
|
### 404 - Error: Forbidden
|
||||||
|
|
||||||
The provided token is unknown.
|
The provided token is unknown.
|
|
@ -29,7 +29,7 @@ async fn register(
|
||||||
async fn verify(data: web::Data<ApiState>, body: web::Json<data::VerifyRequest>) -> impl Responder {
|
async fn verify(data: web::Data<ApiState>, body: web::Json<data::VerifyRequest>) -> impl Responder {
|
||||||
match handlers::verify(&data.pool, body.into_inner()).await {
|
match handlers::verify(&data.pool, body.into_inner()).await {
|
||||||
Ok(resp) => match resp {
|
Ok(resp) => match resp {
|
||||||
data::VerifyResponse::Success => HttpResponse::Ok().finish(),
|
data::VerifyResponse::Success(b) => HttpResponse::Ok().json(web::Json(b)),
|
||||||
data::VerifyResponse::TokenUnknown => HttpResponse::NotFound().finish(),
|
data::VerifyResponse::TokenUnknown => HttpResponse::NotFound().finish(),
|
||||||
data::VerifyResponse::Blocked => HttpResponse::Forbidden().finish(),
|
data::VerifyResponse::Blocked => HttpResponse::Forbidden().finish(),
|
||||||
},
|
},
|
||||||
|
|
|
@ -34,9 +34,14 @@ pub struct VerifyRequest {
|
||||||
pub token: String,
|
pub token: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize)]
|
||||||
|
pub struct VerifySuccess {
|
||||||
|
pub token: String,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum VerifyResponse {
|
pub enum VerifyResponse {
|
||||||
Success,
|
Success(VerifySuccess),
|
||||||
Blocked,
|
Blocked,
|
||||||
TokenUnknown,
|
TokenUnknown,
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,11 @@ pub async fn verify(pool: &PgPool, request: data::VerifyRequest) -> Result<data:
|
||||||
|
|
||||||
token.apply(pool).await?;
|
token.apply(pool).await?;
|
||||||
|
|
||||||
Ok(data::VerifyResponse::Success)
|
let auth_token = AuthToken::new(pool, &token.account, chrono::Duration::days(7)).await?;
|
||||||
|
|
||||||
|
Ok(data::VerifyResponse::Success(data::VerifySuccess {
|
||||||
|
token: auth_token.token
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn authenticate(
|
pub async fn authenticate(
|
||||||
|
|
Loading…
Reference in New Issue