mirror of
https://github.com/zoriya/Kyoo.git
synced 2026-03-05 08:23:40 -05:00
106 lines
3.3 KiB
TypeScript
106 lines
3.3 KiB
TypeScript
import {APP_INITIALIZER, NgModule} from '@angular/core';
|
|
import {CommonModule} from '@angular/common';
|
|
import {AccountComponent} from "./account/account.component";
|
|
import {AuthPipe} from "./misc/auth.pipe";
|
|
import {UnauthorizedComponent} from "./unauthorized/unauthorized.component";
|
|
import {LogoutComponent} from "./logout/logout.component";
|
|
import {ConfigResult, OidcConfigService, OidcSecurityService, OpenIdConfiguration, AuthModule as OidcModule} from "angular-auth-oidc-client";
|
|
import {HTTP_INTERCEPTORS, HttpClient} from "@angular/common/http";
|
|
import {AuthGuard} from "./misc/authenticated-guard.service";
|
|
import {AuthorizerInterceptor} from "./misc/authorizer-interceptor.service";
|
|
import {MatFormFieldModule} from "@angular/material/form-field";
|
|
import {MatIconModule} from "@angular/material/icon";
|
|
import {MatInputModule} from "@angular/material/input";
|
|
import {MatDialogModule} from "@angular/material/dialog";
|
|
import {MatButtonModule} from "@angular/material/button";
|
|
import {MatSelectModule} from "@angular/material/select";
|
|
import {MatMenuModule} from "@angular/material/menu";
|
|
import {MatSliderModule} from "@angular/material/slider";
|
|
import {MatTooltipModule} from "@angular/material/tooltip";
|
|
import {MatRippleModule} from "@angular/material/core";
|
|
import {MatCardModule} from "@angular/material/card";
|
|
import {FormsModule} from "@angular/forms";
|
|
import {MatTabsModule} from "@angular/material/tabs";
|
|
import {MatCheckboxModule} from "@angular/material/checkbox";
|
|
|
|
export function loadConfig(oidcConfigService: OidcConfigService)
|
|
{
|
|
return () => oidcConfigService.load_using_stsServer(window.location.origin);
|
|
}
|
|
|
|
@NgModule({
|
|
declarations: [
|
|
AuthPipe,
|
|
AccountComponent,
|
|
UnauthorizedComponent,
|
|
LogoutComponent
|
|
],
|
|
imports: [
|
|
CommonModule,
|
|
MatButtonModule,
|
|
MatIconModule,
|
|
MatSelectModule,
|
|
MatMenuModule,
|
|
MatSliderModule,
|
|
MatTooltipModule,
|
|
MatRippleModule,
|
|
MatCardModule,
|
|
MatInputModule,
|
|
MatFormFieldModule,
|
|
MatDialogModule,
|
|
FormsModule,
|
|
MatTabsModule,
|
|
MatCheckboxModule,
|
|
OidcModule.forRoot()
|
|
],
|
|
entryComponents: [
|
|
AccountComponent
|
|
],
|
|
providers: [
|
|
OidcConfigService,
|
|
{
|
|
provide: APP_INITIALIZER,
|
|
useFactory: loadConfig,
|
|
deps: [OidcConfigService],
|
|
multi: true
|
|
},
|
|
AuthGuard.guards,
|
|
{
|
|
provide: HTTP_INTERCEPTORS,
|
|
useClass: AuthorizerInterceptor,
|
|
multi: true
|
|
}
|
|
]
|
|
})
|
|
export class AuthModule
|
|
{
|
|
constructor(private oidcSecurityService: OidcSecurityService, private oidcConfigService: OidcConfigService, http: HttpClient)
|
|
{
|
|
this.oidcConfigService.onConfigurationLoaded.subscribe((configResult: ConfigResult) =>
|
|
{
|
|
const config: OpenIdConfiguration = {
|
|
stsServer: configResult.customConfig.stsServer,
|
|
redirect_url: "/",
|
|
post_logout_redirect_uri: "/logout",
|
|
client_id: 'kyoo.webapp',
|
|
response_type: "code",
|
|
trigger_authorization_result_event: false,
|
|
scope: "openid profile",
|
|
silent_renew: true,
|
|
silent_renew_url: "/silent.html",
|
|
use_refresh_token: false,
|
|
start_checksession: true,
|
|
|
|
forbidden_route: '/Forbidden',
|
|
unauthorized_route: '/Unauthorized',
|
|
log_console_warning_active: true,
|
|
log_console_debug_active: true
|
|
};
|
|
|
|
this.oidcSecurityService.setupModule(config, configResult.authWellknownEndpoints);
|
|
});
|
|
|
|
http.get("/api/account/default-permissions").subscribe((result: string[]) => AuthGuard.defaultPermissions = result);
|
|
}
|
|
}
|