-// Do not use the barrel (dependency loop)
-import { UserRole } from '../../../../../shared/models/users/user-role.type'
-import { User, UserConstructorHash } from '../../shared/users/user.model'
-
-export type TokenOptions = {
- accessToken: string
- refreshToken: string
- tokenType: string
-}
-
-// Private class only used by User
-class Tokens {
- private static KEYS = {
- ACCESS_TOKEN: 'access_token',
- REFRESH_TOKEN: 'refresh_token',
- TOKEN_TYPE: 'token_type'
- }
-
- accessToken: string
- refreshToken: string
- tokenType: string
-
- static load () {
- const accessTokenLocalStorage = localStorage.getItem(this.KEYS.ACCESS_TOKEN)
- const refreshTokenLocalStorage = localStorage.getItem(this.KEYS.REFRESH_TOKEN)
- const tokenTypeLocalStorage = localStorage.getItem(this.KEYS.TOKEN_TYPE)
-
- if (accessTokenLocalStorage && refreshTokenLocalStorage && tokenTypeLocalStorage) {
- return new Tokens({
- accessToken: accessTokenLocalStorage,
- refreshToken: refreshTokenLocalStorage,
- tokenType: tokenTypeLocalStorage
- })
- }
-
- return null
- }
-
- static flush () {
- localStorage.removeItem(this.KEYS.ACCESS_TOKEN)
- localStorage.removeItem(this.KEYS.REFRESH_TOKEN)
- localStorage.removeItem(this.KEYS.TOKEN_TYPE)
- }
-
- constructor (hash?: TokenOptions) {
- if (hash) {
- this.accessToken = hash.accessToken
- this.refreshToken = hash.refreshToken
+import { Observable, of } from 'rxjs'
+import { map } from 'rxjs/operators'
+import { User } from '@app/core/users/user.model'
+import { OAuthUserTokens } from '@root-helpers/users'
+import { hasUserRight } from '@shared/core-utils/users'
+import {
+ MyUser as ServerMyUserModel,
+ MyUserSpecialPlaylist,
+ User as ServerUserModel,
+ UserRight,
+ UserRole,
+ UserVideoQuota
+} from '@shared/models'
+
+export class AuthUser extends User implements ServerMyUserModel {
+ oauthTokens: OAuthUserTokens
+ specialPlaylists: MyUserSpecialPlaylist[]
+
+ canSeeVideosLink = true
+
+ constructor (userHash: Partial<ServerMyUserModel>, hashTokens: Partial<OAuthUserTokens>) {
+ super(userHash)