@ -1,9 +1,4 @@
import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type' ;
import { NotificationService } from '@ghostfolio/client/core/notification/notification.service' ;
import { AdminService } from '@ghostfolio/client/services/admin.service' ;
import { DataService } from '@ghostfolio/client/services/data.service' ;
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service' ;
import { UserService } from '@ghostfolio/client/services/user/user.service' ;
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service' ;
import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config' ;
import { getDateFormatString , getEmojiFlag } from '@ghostfolio/common/helper' ;
import { AdminUsers , InfoItem , User } from '@ghostfolio/common/interfaces' ;
@ -26,11 +21,18 @@ import {
import { Subject } from 'rxjs' ;
import { takeUntil } from 'rxjs/operators' ;
import { ConfirmationDialogType } from '../../core/notification/confirmation-dialog/confirmation-dialog.type' ;
import { NotificationService } from '../../core/notification/notification.service' ;
import { AdminService } from '../../services/admin.service' ;
import { DataService } from '../../services/data.service' ;
import { ImpersonationStorageService } from '../../services/impersonation-storage.service' ;
import { UserService } from '../../services/user/user.service' ;
@Component ( {
selector : 'gf-admin-users' ,
standalone : false ,
styleUrls : [ './admin-users.scss' ] ,
templateUrl : './admin-users.html' ,
standalone : false
templateUrl : './admin-users.html'
} )
export class AdminUsersComponent implements OnDestroy , OnInit {
@ViewChild ( MatPaginator ) paginator : MatPaginator ;
@ -55,6 +57,7 @@ export class AdminUsersComponent implements OnDestroy, OnInit {
private dataService : DataService ,
private impersonationStorageService : ImpersonationStorageService ,
private notificationService : NotificationService ,
private tokenStorageService : TokenStorageService ,
private userService : UserService
) {
this . info = this . dataService . fetchInfo ( ) ;
@ -140,6 +143,32 @@ export class AdminUsersComponent implements OnDestroy, OnInit {
} ) ;
}
public onGenerateAccessToken ( aUserId : string ) {
this . notificationService . confirm ( {
confirmFn : ( ) = > {
this . dataService
. generateAccessToken ( aUserId )
. pipe ( takeUntil ( this . unsubscribeSubject ) )
. subscribe ( ( { accessToken } ) = > {
this . notificationService . alert ( {
discardFn : ( ) = > {
if ( aUserId === this . user . id ) {
this . tokenStorageService . signOut ( ) ;
this . userService . remove ( ) ;
document . location . href = ` / ${ document . documentElement . lang } ` ;
}
} ,
message : accessToken ,
title : $localize ` Security token `
} ) ;
} ) ;
} ,
confirmType : ConfirmationDialogType.Warn ,
title : $localize ` Do you really want to generate a new security token for this user? `
} ) ;
}
public onImpersonateUser ( aId : string ) {
if ( aId ) {
this . impersonationStorageService . setId ( aId ) ;