/* * Copyright (C) 2022 Aravinth Manivannan * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ use crate::errors::ServiceError; use crate::AppCtx; use actix_web::web; use actix_web::{dev::ServiceRequest, Error}; use actix_web_httpauth::extractors::bearer::BearerAuth; pub mod forms; pub mod meta; pub const API_V1_ROUTES: routes::Routes = routes::Routes::new(); pub fn services(cfg: &mut web::ServiceConfig) { meta::services(cfg); forms::services(cfg); } pub mod routes { use crate::api::v1::forms::routes::Forms; use crate::api::v1::meta::routes::Meta; pub struct Routes { pub meta: Meta, pub forms: Forms, } impl Routes { pub const fn new() -> Self { Self { meta: Meta::new(), forms: Forms::new(), } } } } pub async fn bearerauth( req: ServiceRequest, credentials: BearerAuth, ) -> Result { let ctx: &AppCtx = req.app_data().unwrap(); let creds = credentials.token(); if ctx.settings.dash.api_key == creds { Ok(req) } else { let e = Error::from(ServiceError::Unauthorized); Err((e, req)) } }