aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/core
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app/core')
-rw-r--r--client/src/app/core/auth/auth.service.ts10
-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
4 files changed, 22 insertions, 13 deletions
diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts
index ed7eabb76..6fe601d8d 100644
--- a/client/src/app/core/auth/auth.service.ts
+++ b/client/src/app/core/auth/auth.service.ts
@@ -5,11 +5,11 @@ import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from '@angular
5import { Injectable } from '@angular/core' 5import { Injectable } from '@angular/core'
6import { Router } from '@angular/router' 6import { Router } from '@angular/router'
7import { Notifier } from '@app/core/notification/notifier.service' 7import { Notifier } from '@app/core/notification/notifier.service'
8import { logger, OAuthUserTokens, objectToUrlEncoded, peertubeLocalStorage, PluginsManager } from '@root-helpers/index' 8import { logger, OAuthUserTokens, objectToUrlEncoded, peertubeLocalStorage } from '@root-helpers/index'
9import { HttpStatusCode, MyUser as UserServerModel, OAuthClientLocal, User, UserLogin, UserRefreshToken } from '@shared/models' 9import { HttpStatusCode, MyUser as UserServerModel, OAuthClientLocal, User, UserLogin, UserRefreshToken } from '@shared/models'
10import { environment } from '../../../environments/environment' 10import { environment } from '../../../environments/environment'
11import { RestExtractor } from '../rest/rest-extractor.service' 11import { RestExtractor } from '../rest/rest-extractor.service'
12import { ServerService } from '../server' 12import { RedirectService } from '../routing'
13import { AuthStatus } from './auth-status.model' 13import { AuthStatus } from './auth-status.model'
14import { AuthUser } from './auth-user.model' 14import { AuthUser } from './auth-user.model'
15 15
@@ -45,7 +45,7 @@ export class AuthService {
45 private refreshingTokenObservable: Observable<any> 45 private refreshingTokenObservable: Observable<any>
46 46
47 constructor ( 47 constructor (
48 private serverService: ServerService, 48 private redirectService: RedirectService,
49 private http: HttpClient, 49 private http: HttpClient,
50 private notifier: Notifier, 50 private notifier: Notifier,
51 private hotkeysService: HotkeysService, 51 private hotkeysService: HotkeysService,
@@ -227,9 +227,7 @@ Ensure you have correctly configured PeerTube (config/ directory), in particular
227 logger.info('Cannot refresh token -> logout...') 227 logger.info('Cannot refresh token -> logout...')
228 this.logout() 228 this.logout()
229 229
230 const externalLoginUrl = PluginsManager.getDefaultLoginHref(environment.apiUrl, this.serverService.getHTMLConfig()) 230 this.redirectService.redirectToLogin()
231 if (externalLoginUrl) window.location.href = externalLoginUrl
232 else this.router.navigate([ '/login' ])
233 231
234 return observableThrowError(() => ({ 232 return observableThrowError(() => ({
235 error: $localize`You need to reconnect.` 233 error: $localize`You need to reconnect.`
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