diff --git a/crates/nextcloud_login/public/assets/style.css b/crates/nextcloud_login/public/assets/style.css deleted file mode 100644 index 2876913..0000000 --- a/crates/nextcloud_login/public/assets/style.css +++ /dev/null @@ -1,7 +0,0 @@ -body { - font-family: sans-serif; -} - -* { - box-sizing: border-box; -} diff --git a/crates/nextcloud_login/public/templates/layouts/default.html b/crates/nextcloud_login/public/templates/layouts/default.html index 32dd48a..c9535a9 100644 --- a/crates/nextcloud_login/public/templates/layouts/default.html +++ b/crates/nextcloud_login/public/templates/layouts/default.html @@ -5,7 +5,6 @@ {% block title %}RustiCal{% endblock %} - {% block imports %}{% endblock %} diff --git a/crates/nextcloud_login/src/assets.rs b/crates/nextcloud_login/src/assets.rs deleted file mode 100644 index 6e99886..0000000 --- a/crates/nextcloud_login/src/assets.rs +++ /dev/null @@ -1,113 +0,0 @@ -use std::marker::PhantomData; - -use actix_web::{ - body::BoxBody, - dev::{ - HttpServiceFactory, ResourceDef, Service, ServiceFactory, ServiceRequest, ServiceResponse, - }, - http::{header, Method}, - HttpResponse, -}; -use futures_core::future::LocalBoxFuture; -use rust_embed::RustEmbed; - -#[derive(RustEmbed)] -#[folder = "public/assets"] -pub struct Assets; - -pub struct EmbedService -where - E: 'static + RustEmbed, -{ - _embed: PhantomData, - prefix: String, -} - -impl EmbedService -where - E: 'static + RustEmbed, -{ - pub fn new(prefix: String) -> Self { - Self { - prefix, - _embed: PhantomData, - } - } -} - -impl HttpServiceFactory for EmbedService -where - E: 'static + RustEmbed, -{ - fn register(self, config: &mut actix_web::dev::AppService) { - let resource_def = if config.is_root() { - ResourceDef::root_prefix(&self.prefix) - } else { - ResourceDef::prefix(&self.prefix) - }; - config.register_service(resource_def, None, self, None); - } -} - -impl ServiceFactory for EmbedService -where - E: 'static + RustEmbed, -{ - type Response = ServiceResponse; - type Error = actix_web::Error; - type Config = (); - type Service = EmbedService; - type InitError = (); - type Future = LocalBoxFuture<'static, Result>; - - fn new_service(&self, _: ()) -> Self::Future { - let prefix = self.prefix.clone(); - Box::pin(async move { - Ok(Self { - prefix, - _embed: PhantomData, - }) - }) - } -} - -impl Service for EmbedService -where - E: 'static + RustEmbed, -{ - type Response = ServiceResponse; - type Error = actix_web::Error; - type Future = LocalBoxFuture<'static, Result>; - - actix_web::dev::always_ready!(); - - fn call(&self, req: ServiceRequest) -> Self::Future { - Box::pin(async move { - if req.method() != Method::GET && req.method() != Method::HEAD { - return Ok(req.into_response(HttpResponse::MethodNotAllowed())); - } - let path = req.match_info().unprocessed().trim_start_matches('/'); - - match E::get(path) { - Some(file) => { - let data = file.data; - let hash = hex::encode(file.metadata.sha256_hash()); - let mime = mime_guess::from_path(path).first_or_octet_stream(); - - let body = if req.method() == Method::HEAD { - Default::default() - } else { - data - }; - Ok(req.into_response( - HttpResponse::Ok() - .content_type(mime) - .insert_header((header::ETAG, hash)) - .body(body), - )) - } - None => Ok(req.into_response(HttpResponse::NotFound())), - } - }) - } -} diff --git a/crates/nextcloud_login/src/lib.rs b/crates/nextcloud_login/src/lib.rs index 959b12e..fc3c89b 100644 --- a/crates/nextcloud_login/src/lib.rs +++ b/crates/nextcloud_login/src/lib.rs @@ -4,14 +4,12 @@ use actix_web::{ HttpRequest, HttpResponse, Responder, }; use askama::Template; -use assets::{Assets, EmbedService}; use chrono::{DateTime, Duration, Utc}; use rand::{distributions::Alphanumeric, Rng}; use rustical_store::auth::{AuthenticationMiddleware, AuthenticationProvider, User}; use serde::{Deserialize, Serialize}; use std::{collections::HashMap, sync::Arc}; use tokio::sync::RwLock; -mod assets; #[derive(Debug, Clone)] struct NextcloudFlow { @@ -212,7 +210,6 @@ pub fn configure_nextcloud_login( .wrap(AuthenticationMiddleware::new(auth_provider.clone())) .app_data(Data::from(nextcloud_flows_state)) .app_data(Data::from(auth_provider.clone())) - .service(EmbedService::::new("/assets".to_owned())) .service(web::resource("/index.php/login/v2").post(post_nextcloud_login)) .service( web::resource("/login/v2/poll/{flow}")