aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/core/routing
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2023-02-14 11:47:01 +0100
committerChocobozzz <me@florianbigard.com>2023-02-14 11:51:44 +0100
commit98bd5e2256bfdeba6d5ab07f0421acfde1a0de26 (patch)
treea1193f1af10f0da7a532d4aa6d5045e51c3d16a9 /client/src/app/core/routing
parent4ea827076df39935375d66fffb5e1e27e667111e (diff)
downloadPeerTube-98bd5e2256bfdeba6d5ab07f0421acfde1a0de26.tar.gz
PeerTube-98bd5e2256bfdeba6d5ab07f0421acfde1a0de26.tar.zst
PeerTube-98bd5e2256bfdeba6d5ab07f0421acfde1a0de26.zip
Refactor login redirection/button links
Correctly handle external auth redirection in all cases
Diffstat (limited to 'client/src/app/core/routing')
-rw-r--r--client/src/app/core/routing/login-guard.service.ts9
-rw-r--r--client/src/app/core/routing/redirect.service.ts9
-rw-r--r--client/src/app/core/routing/user-right-guard.service.ts7
3 files changed, 18 insertions, 7 deletions
diff --git a/client/src/app/core/routing/login-guard.service.ts b/client/src/app/core/routing/login-guard.service.ts
index a949be14c..2f5a31e7f 100644
--- a/client/src/app/core/routing/login-guard.service.ts
+++ b/client/src/app/core/routing/login-guard.service.ts
@@ -1,19 +1,20 @@
1import { Injectable } from '@angular/core' 1import { Injectable } from '@angular/core'
2import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router' 2import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot } from '@angular/router'
3import { AuthService } from '../auth/auth.service' 3import { AuthService } from '../auth/auth.service'
4import { RedirectService } from './redirect.service'
4 5
5@Injectable() 6@Injectable()
6export class LoginGuard implements CanActivate, CanActivateChild { 7export class LoginGuard implements CanActivate, CanActivateChild {
7 8
8 constructor ( 9 constructor (
9 private router: Router, 10 private auth: AuthService,
10 private auth: AuthService 11 private redirectService: RedirectService
11 ) {} 12 ) {}
12 13
13 canActivate (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 14 canActivate (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
14 if (this.auth.isLoggedIn() === true) return true 15 if (this.auth.isLoggedIn() === true) return true
15 16
16 this.router.navigate([ '/login' ]) 17 this.redirectService.redirectToLogin()
17 return false 18 return false
18 } 19 }
19 20
diff --git a/client/src/app/core/routing/redirect.service.ts b/client/src/app/core/routing/redirect.service.ts
index 1344458d5..e239c6210 100644
--- a/client/src/app/core/routing/redirect.service.ts
+++ b/client/src/app/core/routing/redirect.service.ts
@@ -4,6 +4,8 @@ import { NavigationCancel, NavigationEnd, Router } from '@angular/router'
4import { logger } from '@root-helpers/logger' 4import { logger } from '@root-helpers/logger'
5import { ServerService } from '../server' 5import { ServerService } from '../server'
6import { SessionStorageService } from '../wrappers/storage.service' 6import { SessionStorageService } from '../wrappers/storage.service'
7import { PluginsManager } from '@root-helpers/plugins-manager'
8import { environment } from 'src/environments/environment'
7 9
8const debugLogger = debug('peertube:router:RedirectService') 10const debugLogger = debug('peertube:router:RedirectService')
9 11
@@ -100,6 +102,13 @@ export class RedirectService {
100 102
101 } 103 }
102 104
105 redirectToLogin () {
106 const externalLoginUrl = PluginsManager.getDefaultLoginHref(environment.apiUrl, this.serverService.getHTMLConfig())
107
108 if (externalLoginUrl) window.location.href = externalLoginUrl
109 else this.router.navigate([ '/login' ])
110 }
111
103 private doRedirect (redirectUrl: string, fallbackRoute?: string) { 112 private doRedirect (redirectUrl: string, fallbackRoute?: string) {
104 debugLogger('Redirecting on %s', redirectUrl) 113 debugLogger('Redirecting on %s', redirectUrl)
105 114
diff --git a/client/src/app/core/routing/user-right-guard.service.ts b/client/src/app/core/routing/user-right-guard.service.ts
index a2ce772db..c6bd05bb6 100644
--- a/client/src/app/core/routing/user-right-guard.service.ts
+++ b/client/src/app/core/routing/user-right-guard.service.ts
@@ -1,12 +1,13 @@
1import { Injectable } from '@angular/core' 1import { Injectable } from '@angular/core'
2import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, Router, RouterStateSnapshot } from '@angular/router' 2import { ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot } from '@angular/router'
3import { AuthService } from '../auth/auth.service' 3import { AuthService } from '../auth/auth.service'
4import { RedirectService } from './redirect.service'
4 5
5@Injectable() 6@Injectable()
6export class UserRightGuard implements CanActivate, CanActivateChild { 7export class UserRightGuard implements CanActivate, CanActivateChild {
7 8
8 constructor ( 9 constructor (
9 private router: Router, 10 private redirectService: RedirectService,
10 private auth: AuthService 11 private auth: AuthService
11 ) {} 12 ) {}
12 13
@@ -18,7 +19,7 @@ export class UserRightGuard implements CanActivate, CanActivateChild {
18 if (user.hasRight(neededUserRight)) return true 19 if (user.hasRight(neededUserRight)) return true
19 } 20 }
20 21
21 this.router.navigate([ '/login' ]) 22 this.redirectService.redirectToLogin()
22 return false 23 return false
23 } 24 }
24 25