Skip to content

Instantly share code, notes, and snippets.

View alx-andru's full-sized avatar
👨‍💻
code, deploy, repeat

Alex alx-andru

👨‍💻
code, deploy, repeat
View GitHub Profile
@alx-andru
alx-andru / app.component.html
Created October 28, 2018 17:28
Modified app.component.html with routes
<button routerLink="/">Home</button>
<button routerLink="/protected">Protected</button>
&nbsp;
<button (click)="signoutRedirect()">Signout</button>
<router-outlet></router-outlet>
@alx-andru
alx-andru / app.component.ts
Last active November 4, 2018 01:29
Modified app.component.ts after adding routes
...
export class AppComponent implements OnInit {
title = 'DraftApp';
identity$: Observable<User>;
constructor(private oidcFacade: OidcFacade) {
this.identity$ = this.oidcFacade.identity$;
}
ngOnInit() {
...
export class LoginComponent implements OnInit {
constructor(private oidcFacade: OidcFacade) {}
ngOnInit() {}
loginRedirect() {
this.oidcFacade.signinRedirect();
}
}
<p>
login works!
</p>
<button (click)="loginRedirect()">Login</button>
...
export class AuthGuard implements CanActivate {
constructor(private router: Router, private oidcFacade: OidcFacade) {}
public canActivate(
route: ActivatedRouteSnapshot,
state: RouterStateSnapshot
): Observable<boolean> | boolean {
return this.oidcFacade.waitForAuthenticationLoaded().pipe(
switchMap(loading => {
@alx-andru
alx-andru / app.module.ts
Last active November 4, 2018 01:37
App Module after routes are enabled
...
const routes: Routes = [
{
path: '',
pathMatch: 'full',
component: HomeComponent
},
{
path: 'login',
// ...
export class TokenInterceptorService implements HttpInterceptor {
static OidcInterceptorService: any;
constructor(private oidcFacade: OidcFacade) {}
intercept(
req: HttpRequest<any>,
next: HttpHandler
): Observable<HttpEvent<any>> {
return this.oidcFacade.identity$.pipe(
@alx-andru
alx-andru / home.component.html
Created October 28, 2018 21:29
Modified HomeComponent to check user info and test token
<p>
home works!
</p>
<button (click)="checkUserInfo()">Check userInfo</button>
<pre>{{userInfo$ | async | json}}</pre>
@alx-andru
alx-andru / app.module.ts
Last active November 4, 2018 01:38
Modified AppModule to include the HttpInterceptor
...
const routes: Routes = [
{
path: '',
pathMatch: 'full',
component: HomeComponent
},
{
path: 'login',
component: LoginComponent
@alx-andru
alx-andru / home-component.ts
Last active November 4, 2018 01:38
Modified HomeComponent to test token interceptor
...
export class HomeComponent implements OnInit {
userInfo$: Observable<User>;
constructor(private http: HttpClient, private oidcFacade: OidcFacade) {}
ngOnInit() {}
checkUserInfo() {
const identityProviderUrl = this.oidcFacade.getOidcClient().settings.authority;