feat: implement provider and student specific login contexts
This commit is contained in:
1 parent
d42573bf65
commit
09de9fcf91
18 files changed
+193
-109
No files matched your search
@@ -0,0 +1,5 @@
|
||||
mod provider;
|
||||
pub use provider::*;
|
||||
mod student;
|
||||
pub use student::*;
|
||||
pub(crate) mod setup;
|
||||
@@ -0,0 +1,30 @@
|
||||
use leptos::prelude::*;
|
||||
use leptos_router::components::Outlet;
|
||||
use super::setup::provide_auth_context;
|
||||
|
||||
///# Provider Login Context Component
|
||||
///
|
||||
/// This component handles providing context to the provider login information.
|
||||
/// It creates the corresponding [`AuthSignal`], specific to the student login page and redirects.
|
||||
///
|
||||
/// Example usage:
|
||||
/// ```
|
||||
/// view! {
|
||||
/// <ProviderLoginContext>
|
||||
/// // The rest of the student application. Don't forget AuthLoaded and
|
||||
/// // Authenticated components!
|
||||
/// </ProviderLoginContext>
|
||||
/// }
|
||||
#[component]
|
||||
pub fn ProviderLoginContext() -> impl IntoView {
|
||||
provide_auth_context(
|
||||
crate::utils::use_origin(),
|
||||
"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_Lfjuy5zaM",
|
||||
"56c2bqvl021rv8d5mq36blt7jv",
|
||||
"/providers/callback"
|
||||
);
|
||||
|
||||
view! {
|
||||
<Outlet />
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
use leptos::prelude::*;
|
||||
use leptos_oidc::{Auth, AuthParameters, Challenge};
|
||||
|
||||
pub fn provide_auth_context(
|
||||
origin: String,
|
||||
issuer: impl Into<String>,
|
||||
client_id: impl Into<String>,
|
||||
redirect_path: impl Into<String>,
|
||||
) {
|
||||
let params = AuthParameters {
|
||||
issuer: issuer.into(),
|
||||
client_id: client_id.into(),
|
||||
redirect_uri: format!("{}{}", origin, redirect_path.into()),
|
||||
post_logout_redirect_uri: origin,
|
||||
scope: Some("openid%20profile%20email".into()),
|
||||
audience: None,
|
||||
challenge: Challenge::None,
|
||||
};
|
||||
|
||||
let auth = Auth::signal();
|
||||
provide_context(auth);
|
||||
|
||||
let _ = Auth::init(params);
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
use leptos::prelude::*;
|
||||
use leptos_router::components::Outlet;
|
||||
use super::setup::provide_auth_context;
|
||||
|
||||
///# Student Login Context Component
|
||||
///
|
||||
/// This component handles providing context to the student login information.
|
||||
/// It creates the corresponding [`AuthSignal`], specific to the student login page and redirects.
|
||||
///
|
||||
/// Example usage:
|
||||
/// ```
|
||||
/// view! {
|
||||
/// <StudentLoginContext>
|
||||
/// // The rest of the student application. Don't forget AuthLoaded and
|
||||
/// // Authenticated components!
|
||||
/// </StudentLoginContext>
|
||||
/// }
|
||||
#[component]
|
||||
pub fn StudentLoginContext() -> impl IntoView {
|
||||
provide_auth_context(
|
||||
crate::utils::use_origin(),
|
||||
"https://cognito-idp.us-east-1.amazonaws.com/us-east-1_Lfjuy5zaM",
|
||||
"10jr2h3vtpu9n7gj46pvg5qo2q",
|
||||
"/students/callback"
|
||||
);
|
||||
|
||||
view! {
|
||||
<Outlet />
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@ mod validated_form;
|
||||
mod lists;
|
||||
mod toasts;
|
||||
mod header;
|
||||
pub mod login;
|
||||
|
||||
pub use self::{
|
||||
action_button::*, banner::*, dashboard_button::*, lists::*,
|
||||
|
||||
Reference in new issue
Block a user