mirror of https://github.com/Chocobozzz/PeerTube
Client: check token valitidy at startup
parent
a7449e74f9
commit
e2a2d6c86c
|
@ -4,8 +4,7 @@ import { Router } from '@angular/router';
|
|||
|
||||
import { NotificationsService } from 'angular2-notifications';
|
||||
|
||||
import { AccountService } from './account.service';
|
||||
import { FormReactive, USER_PASSWORD } from '../shared';
|
||||
import { FormReactive, UserService, USER_PASSWORD } from '../shared';
|
||||
|
||||
@Component({
|
||||
selector: 'my-account',
|
||||
|
@ -29,7 +28,7 @@ export class AccountComponent extends FormReactive implements OnInit {
|
|||
private formBuilder: FormBuilder,
|
||||
private router: Router,
|
||||
private notificationsService: NotificationsService,
|
||||
private accountService: AccountService
|
||||
private userService: UserService
|
||||
) {
|
||||
super();
|
||||
}
|
||||
|
@ -58,7 +57,7 @@ export class AccountComponent extends FormReactive implements OnInit {
|
|||
return;
|
||||
}
|
||||
|
||||
this.accountService.changePassword(newPassword).subscribe(
|
||||
this.userService.changePassword(newPassword).subscribe(
|
||||
() => this.notificationsService.success('Success', 'Password updated.'),
|
||||
|
||||
err => this.error = err
|
||||
|
|
|
@ -19,8 +19,6 @@ import { SharedModule } from '../shared';
|
|||
AccountComponent
|
||||
],
|
||||
|
||||
providers: [
|
||||
AccountService
|
||||
]
|
||||
providers: []
|
||||
})
|
||||
export class AccountModule { }
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
export * from './account-routing.module';
|
||||
export * from './account.component';
|
||||
export * from './account.module';
|
||||
export * from './account.service';
|
||||
|
|
|
@ -1,14 +1,17 @@
|
|||
import { Component, ViewContainerRef } from '@angular/core';
|
||||
import { Component, OnInit, ViewContainerRef } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
import { MetaService } from 'ng2-meta';
|
||||
|
||||
import { AuthService } from './core';
|
||||
import { UserService } from './shared';
|
||||
|
||||
@Component({
|
||||
selector: 'my-app',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: [ './app.component.scss' ]
|
||||
})
|
||||
|
||||
export class AppComponent {
|
||||
export class AppComponent implements OnInit {
|
||||
notificationOptions = {
|
||||
timeOut: 3000,
|
||||
lastOnBottom: true,
|
||||
|
@ -25,9 +28,18 @@ export class AppComponent {
|
|||
constructor(
|
||||
private router: Router,
|
||||
private metaService: MetaService,
|
||||
private authService: AuthService,
|
||||
private userService: UserService,
|
||||
viewContainerRef: ViewContainerRef
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
if (this.authService.isLoggedIn()) {
|
||||
// The service will automatically redirect to the login page if the token is not valid anymore
|
||||
this.userService.checkTokenValidity();
|
||||
}
|
||||
}
|
||||
|
||||
isInAdmin() {
|
||||
return this.router.url.indexOf('/admin/') !== -1;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { User } from '../users';
|
||||
// Do not use the barrel (dependency loop)
|
||||
import { User } from '../../shared/users/user.model';
|
||||
|
||||
export class AuthUser extends User {
|
||||
private static KEYS = {
|
|
@ -9,9 +9,9 @@ import 'rxjs/add/observable/throw';
|
|||
|
||||
import { NotificationsService } from 'angular2-notifications';
|
||||
|
||||
import { AuthStatus } from './auth-status.model';
|
||||
import { AuthUser } from './auth-user.model';
|
||||
// Do not use the barrel (dependency loop)
|
||||
import { AuthStatus } from '../../shared/auth/auth-status.model';
|
||||
import { AuthUser } from '../../shared/auth/auth-user.model';
|
||||
import { RestExtractor } from '../../shared/rest';
|
||||
|
||||
@Injectable()
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
export * from './auth-status.model';
|
||||
export * from './auth-user.model';
|
||||
export * from './auth.service'
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import { Component, OnInit } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
import { AuthService } from '../auth';
|
||||
import { AuthStatus } from '../../shared';
|
||||
import { AuthService, AuthStatus } from '../auth';
|
||||
|
||||
@Component({
|
||||
selector: 'my-menu',
|
||||
|
|
|
@ -1,3 +1 @@
|
|||
export * from './auth-http.service';
|
||||
export * from './auth-status.model';
|
||||
export * from './auth-user.model';
|
||||
|
|
|
@ -16,6 +16,7 @@ import { Ng2SmartTableModule } from 'ng2-smart-table';
|
|||
import { AUTH_HTTP_PROVIDERS } from './auth';
|
||||
import { RestExtractor, RestService } from './rest';
|
||||
import { SearchComponent, SearchService } from './search';
|
||||
import { UserService } from './users';
|
||||
import { VideoAbuseService } from './video-abuse';
|
||||
|
||||
@NgModule({
|
||||
|
@ -65,7 +66,8 @@ import { VideoAbuseService } from './video-abuse';
|
|||
RestExtractor,
|
||||
RestService,
|
||||
SearchService,
|
||||
VideoAbuseService
|
||||
VideoAbuseService,
|
||||
UserService
|
||||
]
|
||||
})
|
||||
export class SharedModule { }
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
export * from './user.model';
|
||||
export * from './user.service';
|
||||
|
|
|
@ -2,11 +2,12 @@ import { Injectable } from '@angular/core';
|
|||
import 'rxjs/add/operator/catch';
|
||||
import 'rxjs/add/operator/map';
|
||||
|
||||
import { AuthService } from '../core';
|
||||
import { AuthHttp, RestExtractor } from '../shared';
|
||||
import { AuthService } from '../../core';
|
||||
import { AuthHttp } from '../auth';
|
||||
import { RestExtractor } from '../rest';
|
||||
|
||||
@Injectable()
|
||||
export class AccountService {
|
||||
export class UserService {
|
||||
private static BASE_USERS_URL = '/api/v1/users/';
|
||||
|
||||
constructor(
|
||||
|
@ -15,8 +16,15 @@ export class AccountService {
|
|||
private restExtractor: RestExtractor
|
||||
) {}
|
||||
|
||||
checkTokenValidity() {
|
||||
const url = UserService.BASE_USERS_URL + 'me';
|
||||
|
||||
// AuthHttp will redirect us to the login page if the oken is not valid anymore
|
||||
this.authHttp.get(url).subscribe(() => { ; });
|
||||
}
|
||||
|
||||
changePassword(newPassword: string) {
|
||||
const url = AccountService.BASE_USERS_URL + this.authService.getUser().id;
|
||||
const url = UserService.BASE_USERS_URL + this.authService.getUser().id;
|
||||
const body = {
|
||||
password: newPassword
|
||||
};
|
|
@ -9,8 +9,8 @@ import {
|
|||
Video,
|
||||
VideoService
|
||||
} from '../shared';
|
||||
import { AuthService } from '../../core';
|
||||
import { AuthUser, RestPagination, Search, SearchField } from '../../shared';
|
||||
import { AuthService, AuthUser } from '../../core';
|
||||
import { RestPagination, Search, SearchField } from '../../shared';
|
||||
import { SearchService } from '../../shared';
|
||||
|
||||
@Component({
|
||||
|
|
Loading…
Reference in New Issue