diff options
Diffstat (limited to 'client/src/app/core/auth/auth.service.ts')
-rw-r--r-- | client/src/app/core/auth/auth.service.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts index fd6062d3f..224f35f82 100644 --- a/client/src/app/core/auth/auth.service.ts +++ b/client/src/app/core/auth/auth.service.ts | |||
@@ -11,6 +11,7 @@ import { environment } from '../../../environments/environment' | |||
11 | import { RestExtractor } from '../rest/rest-extractor.service' | 11 | import { RestExtractor } from '../rest/rest-extractor.service' |
12 | import { AuthStatus } from './auth-status.model' | 12 | import { AuthStatus } from './auth-status.model' |
13 | import { AuthUser } from './auth-user.model' | 13 | import { AuthUser } from './auth-user.model' |
14 | import { ScopedTokenType, ScopedToken } from '@shared/models/users/user-scoped-token' | ||
14 | 15 | ||
15 | interface UserLoginWithUsername extends UserLogin { | 16 | interface UserLoginWithUsername extends UserLogin { |
16 | access_token: string | 17 | access_token: string |
@@ -26,6 +27,7 @@ export class AuthService { | |||
26 | private static BASE_CLIENT_URL = environment.apiUrl + '/api/v1/oauth-clients/local' | 27 | private static BASE_CLIENT_URL = environment.apiUrl + '/api/v1/oauth-clients/local' |
27 | private static BASE_TOKEN_URL = environment.apiUrl + '/api/v1/users/token' | 28 | private static BASE_TOKEN_URL = environment.apiUrl + '/api/v1/users/token' |
28 | private static BASE_REVOKE_TOKEN_URL = environment.apiUrl + '/api/v1/users/revoke-token' | 29 | private static BASE_REVOKE_TOKEN_URL = environment.apiUrl + '/api/v1/users/revoke-token' |
30 | private static BASE_SCOPED_TOKENS_URL = environment.apiUrl + '/api/v1/users/scoped-tokens' | ||
29 | private static BASE_USER_INFORMATION_URL = environment.apiUrl + '/api/v1/users/me' | 31 | private static BASE_USER_INFORMATION_URL = environment.apiUrl + '/api/v1/users/me' |
30 | private static LOCAL_STORAGE_OAUTH_CLIENT_KEYS = { | 32 | private static LOCAL_STORAGE_OAUTH_CLIENT_KEYS = { |
31 | CLIENT_ID: 'client_id', | 33 | CLIENT_ID: 'client_id', |
@@ -41,6 +43,7 @@ export class AuthService { | |||
41 | private loginChanged: Subject<AuthStatus> | 43 | private loginChanged: Subject<AuthStatus> |
42 | private user: AuthUser = null | 44 | private user: AuthUser = null |
43 | private refreshingTokenObservable: Observable<any> | 45 | private refreshingTokenObservable: Observable<any> |
46 | private scopedTokens: ScopedToken | ||
44 | 47 | ||
45 | constructor ( | 48 | constructor ( |
46 | private http: HttpClient, | 49 | private http: HttpClient, |
@@ -244,6 +247,48 @@ Ensure you have correctly configured PeerTube (config/ directory), in particular | |||
244 | ) | 247 | ) |
245 | } | 248 | } |
246 | 249 | ||
250 | getScopedTokens (): Promise<ScopedToken> { | ||
251 | return new Promise((res, rej) => { | ||
252 | if (this.scopedTokens) return res(this.scopedTokens) | ||
253 | |||
254 | const authHeaderValue = this.getRequestHeaderValue() | ||
255 | const headers = new HttpHeaders().set('Authorization', authHeaderValue) | ||
256 | |||
257 | this.http.get<ScopedToken>(AuthService.BASE_SCOPED_TOKENS_URL, { headers }) | ||
258 | .subscribe( | ||
259 | scopedTokens => { | ||
260 | this.scopedTokens = scopedTokens | ||
261 | res(this.scopedTokens) | ||
262 | }, | ||
263 | |||
264 | err => { | ||
265 | console.error(err) | ||
266 | rej(err) | ||
267 | } | ||
268 | ) | ||
269 | }) | ||
270 | } | ||
271 | |||
272 | renewScopedTokens (): Promise<ScopedToken> { | ||
273 | return new Promise((res, rej) => { | ||
274 | const authHeaderValue = this.getRequestHeaderValue() | ||
275 | const headers = new HttpHeaders().set('Authorization', authHeaderValue) | ||
276 | |||
277 | this.http.post<ScopedToken>(AuthService.BASE_SCOPED_TOKENS_URL, {}, { headers }) | ||
278 | .subscribe( | ||
279 | scopedTokens => { | ||
280 | this.scopedTokens = scopedTokens | ||
281 | res(this.scopedTokens) | ||
282 | }, | ||
283 | |||
284 | err => { | ||
285 | console.error(err) | ||
286 | rej(err) | ||
287 | } | ||
288 | ) | ||
289 | }) | ||
290 | } | ||
291 | |||
247 | private mergeUserInformation (obj: UserLoginWithUsername): Observable<UserLoginWithUserInformation> { | 292 | private mergeUserInformation (obj: UserLoginWithUsername): Observable<UserLoginWithUserInformation> { |
248 | // User is not loaded yet, set manually auth header | 293 | // User is not loaded yet, set manually auth header |
249 | const headers = new HttpHeaders().set('Authorization', `${obj.token_type} ${obj.access_token}`) | 294 | const headers = new HttpHeaders().set('Authorization', `${obj.token_type} ${obj.access_token}`) |