feat: login UI port for oauth domain

This commit is contained in:
Aravinth Manivannan 2024-05-04 22:46:40 +05:30
parent 253c26227c
commit 2cf8145e31
Signed by: realaravinth
GPG key ID: F8F50389936984FF
3 changed files with 61 additions and 0 deletions

View file

@ -0,0 +1,51 @@
use actix_web::{
http::{header, StatusCode},
HttpResponse, HttpResponseBuilder, ResponseError,
};
use derive_more::Display;
use serde::{Deserialize, Serialize};
use crate::forge::auth::application::services::{
process_authorization_response::errors::ProcessAuthorizationServiceError,
request_authorization::errors::RequestAuthorizationServiceError,
};
pub type InUIResult<V> = Result<V, InUIError>;
#[derive(Debug, Display, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub enum InUIError {
InternalServerError,
BadRequest,
}
impl From<ProcessAuthorizationServiceError> for InUIError {
fn from(v: ProcessAuthorizationServiceError) -> Self {
match v {
ProcessAuthorizationServiceError::InteralError => Self::InternalServerError,
ProcessAuthorizationServiceError::BadRequest => Self::BadRequest,
}
}
}
impl From<RequestAuthorizationServiceError> for InUIError {
fn from(v: RequestAuthorizationServiceError) -> Self {
match v {
RequestAuthorizationServiceError::InteralError => Self::InternalServerError,
}
}
}
impl ResponseError for InUIError {
fn error_response(&self) -> HttpResponse {
HttpResponseBuilder::new(self.status_code())
.append_header((header::CONTENT_TYPE, "application/sjon; charset=UTF-8"))
.body(serde_json::to_string(self).unwrap())
}
fn status_code(&self) -> actix_web::http::StatusCode {
match self {
Self::BadRequest => StatusCode::BAD_REQUEST,
Self::InternalServerError => StatusCode::INTERNAL_SERVER_ERROR,
}
}
}

View file

@ -0,0 +1,7 @@
use super::errors::*;
use actix_web::HttpResponse;
#[async_trait::async_trait]
pub trait RequestAuthorizationInterface: Send + Sync {
async fn request_oauth_authorization(&self, forge_name: String) -> InUIResult<HttpResponse>;
}

View file

@ -0,0 +1,3 @@
pub mod errors;
pub mod login;
// login