nomilo/src/auth/routes.rs

34 lines
1.2 KiB
Rust
Raw Normal View History

2021-03-26 22:30:38 +00:00
use rocket_contrib::json::Json;
2021-03-27 17:23:19 +00:00
use rocket::{Response, State};
2021-03-27 05:45:59 +00:00
use rocket::http::Status;
2021-03-27 17:23:19 +00:00
use crate::config::Config;
2021-03-26 22:30:38 +00:00
use crate::DbConn;
2021-03-27 17:23:19 +00:00
use crate::models::errors::{ErrorResponse, make_500};
use crate::models::users::{LocalUser, CreateUserRequest, AuthClaims, AuthTokenRequest, AuthTokenResponse};
2021-03-26 22:30:38 +00:00
#[post("/users/me/token", data = "<auth_request>")]
2021-03-27 17:23:19 +00:00
pub fn create_auth_token(
conn: DbConn,
config: State<Config>,
auth_request: Json<AuthTokenRequest>
) -> Result<Json<AuthTokenResponse>, ErrorResponse<()>> {
2021-03-27 05:45:59 +00:00
2021-03-27 17:23:19 +00:00
let user_info = LocalUser::get_user_by_creds(&conn, &auth_request.username, &auth_request.password)?;
let token = AuthClaims::new(&user_info, config.web_app.token_duration)
.encode(&config.web_app.secret)
.map_err(|e| make_500(e))?;
2021-03-26 22:30:38 +00:00
2021-03-27 05:45:59 +00:00
Ok(Json(AuthTokenResponse { token }))
2021-03-26 22:30:38 +00:00
}
2021-03-27 05:45:59 +00:00
#[post("/users", data = "<user_request>")]
pub fn create_user<'r>(conn: DbConn, user_request: Json<CreateUserRequest>) -> Result<Response<'r>, ErrorResponse<()>>{
// TODO: Check current user if any to check if user has permission to create users (with or without role)
let _user_info = LocalUser::create_user(&conn, user_request.into_inner())?;
Response::build()
.status(Status::Created)
.ok()
2021-03-26 22:30:38 +00:00
}