1
- import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type' ;
2
- import { NotificationService } from '@ghostfolio/client/core/notification/notification.service' ;
3
- import { AdminService } from '@ghostfolio/client/services/admin.service' ;
4
- import { DataService } from '@ghostfolio/client/services/data.service' ;
5
- import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service' ;
6
- import { UserService } from '@ghostfolio/client/services/user/user.service' ;
1
+ import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service' ;
7
2
import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config' ;
8
3
import { getDateFormatString , getEmojiFlag } from '@ghostfolio/common/helper' ;
9
4
import { AdminUsers , InfoItem , User } from '@ghostfolio/common/interfaces' ;
@@ -26,11 +21,18 @@ import {
26
21
import { Subject } from 'rxjs' ;
27
22
import { takeUntil } from 'rxjs/operators' ;
28
23
24
+ import { ConfirmationDialogType } from '../../core/notification/confirmation-dialog/confirmation-dialog.type' ;
25
+ import { NotificationService } from '../../core/notification/notification.service' ;
26
+ import { AdminService } from '../../services/admin.service' ;
27
+ import { DataService } from '../../services/data.service' ;
28
+ import { ImpersonationStorageService } from '../../services/impersonation-storage.service' ;
29
+ import { UserService } from '../../services/user/user.service' ;
30
+
29
31
@Component ( {
30
32
selector : 'gf-admin-users' ,
33
+ standalone : false ,
31
34
styleUrls : [ './admin-users.scss' ] ,
32
- templateUrl : './admin-users.html' ,
33
- standalone : false
35
+ templateUrl : './admin-users.html'
34
36
} )
35
37
export class AdminUsersComponent implements OnDestroy , OnInit {
36
38
@ViewChild ( MatPaginator ) paginator : MatPaginator ;
@@ -55,6 +57,7 @@ export class AdminUsersComponent implements OnDestroy, OnInit {
55
57
private dataService : DataService ,
56
58
private impersonationStorageService : ImpersonationStorageService ,
57
59
private notificationService : NotificationService ,
60
+ private tokenStorageService : TokenStorageService ,
58
61
private userService : UserService
59
62
) {
60
63
this . info = this . dataService . fetchInfo ( ) ;
@@ -140,6 +143,32 @@ export class AdminUsersComponent implements OnDestroy, OnInit {
140
143
} ) ;
141
144
}
142
145
146
+ public onGenerateAccessToken ( aUserId : string ) {
147
+ this . notificationService . confirm ( {
148
+ confirmFn : ( ) => {
149
+ this . dataService
150
+ . generateAccessToken ( aUserId )
151
+ . pipe ( takeUntil ( this . unsubscribeSubject ) )
152
+ . subscribe ( ( { accessToken } ) => {
153
+ this . notificationService . alert ( {
154
+ discardFn : ( ) => {
155
+ if ( aUserId === this . user . id ) {
156
+ this . tokenStorageService . signOut ( ) ;
157
+ this . userService . remove ( ) ;
158
+
159
+ document . location . href = `/${ document . documentElement . lang } ` ;
160
+ }
161
+ } ,
162
+ message : accessToken ,
163
+ title : $localize `Security token`
164
+ } ) ;
165
+ } ) ;
166
+ } ,
167
+ confirmType : ConfirmationDialogType . Warn ,
168
+ title : $localize `Do you really want to generate a new security token for this user?`
169
+ } ) ;
170
+ }
171
+
143
172
public onImpersonateUser ( aId : string ) {
144
173
if ( aId ) {
145
174
this . impersonationStorageService . setId ( aId ) ;
0 commit comments