44 lines
1 KiB
Rust
44 lines
1 KiB
Rust
use serde::{Serialize, Deserialize};
|
|
use rocket_contrib::json::Json;
|
|
use diesel::prelude::*;
|
|
use crate::DbConn;
|
|
use crate::models::users::{UserInfo, LocalUser, User};
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
struct AuthClaims {
|
|
jti: String,
|
|
sub: String,
|
|
exp: usize,
|
|
iat: usize,
|
|
}
|
|
|
|
#[derive(Debug, Serialize)]
|
|
pub struct AuthTokenResponse {
|
|
token: String
|
|
}
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct AuthTokenRequest {
|
|
user: String,
|
|
password: String,
|
|
}
|
|
|
|
#[post("/users/me/token", data = "<auth_request>")]
|
|
pub fn create_auth_token(conn: DbConn, auth_request: Json<AuthTokenRequest>) -> Json<AuthTokenResponse> {
|
|
use crate::schema::localuser::dsl::*;
|
|
use crate::schema::user::dsl::*;
|
|
|
|
let client_user: Result<(User, LocalUser), _> = user.inner_join(localuser).filter(username.eq(&auth_request.user)).get_result(&*conn);
|
|
println!("{:?}", client_user);
|
|
Json(AuthTokenResponse { token: "".into() })
|
|
}
|
|
|
|
/*
|
|
GET /users -> list all users
|
|
POST /users
|
|
{
|
|
provider: local
|
|
...
|
|
}
|
|
/users/<uuid or me>/
|
|
*/
|