feat: add basic example

This commit is contained in:
2025-02-06 04:26:07 +08:00
parent 58d7b3c89e
commit 13886502b6
18 changed files with 1568 additions and 111 deletions

View File

@@ -1,13 +1,9 @@
import { InjectionToken, inject } from '@outposts/injection-js';
import type {
AnyRoute,
Router,
TrailingSlashOption,
} from '@tanstack/react-router';
import type { Router } from '@tanstack/react-router';
import { AbstractRouter } from 'src/router';
import type { AuthFeature } from '../../provide-auth';
export type TanStackRouter = Router<AnyRoute, TrailingSlashOption, boolean>;
export type TanStackRouter = Router<any, any, any, any, any, any>;
export const TANSTACK_ROUTER = new InjectionToken<TanStackRouter>(
'TANSTACK_ROUTER'

View File

@@ -1,14 +1,79 @@
import { HttpClient } from '@ngify/http';
import type { Provider } from '@outposts/injection-js';
import { DataService } from './api/data.service';
import { HttpBaseService } from './api/http-base.service';
import {
PASSED_CONFIG,
type PassedInitialConfig,
createStaticLoader,
} from './auth-config';
import { AuthStateService } from './auth-state/auth-state.service';
import { CheckAuthService } from './auth-state/check-auth.service';
import { AutoLoginService } from './auto-login/auto-login.service';
import { CallbackService } from './callback/callback.service';
import { CodeFlowCallbackService } from './callback/code-flow-callback.service';
import { ImplicitFlowCallbackService } from './callback/implicit-flow-callback.service';
import { IntervalService } from './callback/interval.service';
import { PeriodicallyTokenCheckService } from './callback/periodically-token-check.service';
import { RefreshSessionRefreshTokenService } from './callback/refresh-session-refresh-token.service';
import { RefreshSessionService } from './callback/refresh-session.service';
import { AuthWellKnownDataService } from './config/auth-well-known/auth-well-known-data.service';
import { AuthWellKnownService } from './config/auth-well-known/auth-well-known.service';
import { ConfigurationService } from './config/config.service';
import { StsConfigLoader } from './config/loader/config-loader';
import { ConfigValidationService } from './config/validation/config-validation.service';
import { DOCUMENT } from './dom';
import { JwkExtractor } from './extractors/jwk.extractor';
import { CodeFlowCallbackHandlerService } from './flows/callback-handling/code-flow-callback-handler.service';
import { HistoryJwtKeysCallbackHandlerService } from './flows/callback-handling/history-jwt-keys-callback-handler.service';
import { ImplicitFlowCallbackHandlerService } from './flows/callback-handling/implicit-flow-callback-handler.service';
import { RefreshSessionCallbackHandlerService } from './flows/callback-handling/refresh-session-callback-handler.service';
import { RefreshTokenCallbackHandlerService } from './flows/callback-handling/refresh-token-callback-handler.service';
import { StateValidationCallbackHandlerService } from './flows/callback-handling/state-validation-callback-handler.service';
import { UserCallbackHandlerService } from './flows/callback-handling/user-callback-handler.service';
import { FlowsDataService } from './flows/flows-data.service';
import { FlowsService } from './flows/flows.service';
import { RandomService } from './flows/random/random.service';
import { ResetAuthDataService } from './flows/reset-auth-data.service';
import { SigninKeyDataService } from './flows/signin-key-data.service';
import { CheckSessionService } from './iframe/check-session.service';
import { IFrameService } from './iframe/existing-iframe.service';
import { RefreshSessionIframeService } from './iframe/refresh-session-iframe.service';
import { SilentRenewService } from './iframe/silent-renew.service';
import { ClosestMatchingRouteService } from './interceptor/closest-matching-route.service';
import { AbstractLoggerService } from './logging/abstract-logger.service';
import { ConsoleLoggerService } from './logging/console-logger.service';
import { LoggerService } from './logging/logger.service';
import { LoginService } from './login/login.service';
import { ParLoginService } from './login/par/par-login.service';
import { ParService } from './login/par/par.service';
import { PopUpLoginService } from './login/popup/popup-login.service';
import { PopUpService } from './login/popup/popup.service';
import { ResponseTypeValidationService } from './login/response-type-validation/response-type-validation.service';
import { StandardLoginService } from './login/standard/standard-login.service';
import { LogoffRevocationService } from './logoff-revoke/logoff-revocation.service';
import { OidcSecurityService } from './oidc.security.service';
import { PublicEventsService } from './public-events/public-events.service';
import { AbstractSecurityStorage } from './storage/abstract-security-storage';
import { BrowserStorageService } from './storage/browser-storage.service';
import { DefaultSessionStorageService } from './storage/default-sessionstorage.service';
import { StoragePersistenceService } from './storage/storage-persistence.service';
import { UserService } from './user-data/user.service';
import { CryptoService } from './utils/crypto/crypto.service';
import { EqualityService } from './utils/equality/equality.service';
import { FlowHelper } from './utils/flowHelper/flow-helper.service';
import {
PLATFORM_ID,
PlatformProvider,
} from './utils/platform-provider/platform.provider';
import { RedirectService } from './utils/redirect/redirect.service';
import { TokenHelperService } from './utils/tokenHelper/token-helper.service';
import { CurrentUrlService } from './utils/url/current-url.service';
import { UrlService } from './utils/url/url.service';
import { JwkWindowCryptoService } from './validation/jwk-window-crypto.service';
import { JwtWindowCryptoService } from './validation/jwt-window-crypto.service';
import { StateValidationService } from './validation/state-validation.service';
import { TokenValidationService } from './validation/token-validation.service';
/**
* A feature to be used with `provideAuth`.
@@ -32,9 +97,17 @@ export function provideAuth(
export function _provideAuth(passedConfig: PassedInitialConfig): Provider[] {
return [
{
provide: DOCUMENT,
useFactory: () => document,
},
HttpClient,
{
provide: PLATFORM_ID,
useValue: 'browser',
},
// Make the PASSED_CONFIG available through injection
{ provide: PASSED_CONFIG, useValue: passedConfig },
// Create the loader: Either the one getting passed or a static one
passedConfig?.loader || {
provide: StsConfigLoader,
@@ -46,5 +119,65 @@ export function _provideAuth(passedConfig: PassedInitialConfig): Provider[] {
useClass: DefaultSessionStorageService,
},
{ provide: AbstractLoggerService, useClass: ConsoleLoggerService },
StandardLoginService,
JwkWindowCryptoService,
ParLoginService,
AuthStateService,
RefreshTokenCallbackHandlerService,
JwkExtractor,
TokenHelperService,
RefreshSessionIframeService,
ImplicitFlowCallbackHandlerService,
CallbackService,
EqualityService,
FlowsDataService,
PopUpService,
FlowsService,
StoragePersistenceService,
ClosestMatchingRouteService,
CryptoService,
AutoLoginService,
RedirectService,
LoginService,
CurrentUrlService,
UserCallbackHandlerService,
IFrameService,
BrowserStorageService,
ParService,
LoggerService,
RandomService,
PopUpLoginService,
AuthWellKnownService,
RefreshSessionRefreshTokenService,
CodeFlowCallbackService,
StateValidationService,
FlowHelper,
ImplicitFlowCallbackService,
PublicEventsService,
CodeFlowCallbackHandlerService,
UrlService,
ConfigValidationService,
RefreshSessionService,
HttpBaseService,
AuthWellKnownDataService,
CheckAuthService,
SilentRenewService,
StateValidationCallbackHandlerService,
JwtWindowCryptoService,
ResetAuthDataService,
IntervalService,
LogoffRevocationService,
HistoryJwtKeysCallbackHandlerService,
PlatformProvider,
RefreshSessionCallbackHandlerService,
CheckSessionService,
ConfigurationService,
ResponseTypeValidationService,
DataService,
UserService,
PeriodicallyTokenCheckService,
SigninKeyDataService,
TokenValidationService,
OidcSecurityService,
];
}