mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
			
			
				Browse Source
			
			
			
			
				
		* Support impersonation of all users for local development * Update changelogpull/1902/head
							committed by
							
								 GitHub
								GitHub
							
						
					
				
				 9 changed files with 67 additions and 23 deletions
			
			
		| @ -1,15 +1,35 @@ | |||
| import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; | |||
| import { Injectable } from '@nestjs/common'; | |||
| import { hasPermission, permissions } from '@ghostfolio/common/permissions'; | |||
| import { RequestWithUser } from '@ghostfolio/common/types'; | |||
| import { Inject, Injectable } from '@nestjs/common'; | |||
| import { REQUEST } from '@nestjs/core'; | |||
| 
 | |||
| @Injectable() | |||
| export class ImpersonationService { | |||
|   public constructor(private readonly prismaService: PrismaService) {} | |||
|   public constructor( | |||
|     private readonly prismaService: PrismaService, | |||
|     @Inject(REQUEST) private readonly request: RequestWithUser | |||
|   ) {} | |||
| 
 | |||
|   public async validateImpersonationId(aId = '', aUserId: string) { | |||
|   public async validateImpersonationId(aId = '') { | |||
|     const accessObject = await this.prismaService.access.findFirst({ | |||
|       where: { GranteeUser: { id: aUserId }, id: aId } | |||
|       where: { | |||
|         GranteeUser: { id: this.request.user.id }, | |||
|         id: aId | |||
|       } | |||
|     }); | |||
| 
 | |||
|     return accessObject?.userId; | |||
|     if (accessObject?.userId) { | |||
|       return accessObject?.userId; | |||
|     } else if ( | |||
|       hasPermission( | |||
|         this.request.user.permissions, | |||
|         permissions.impersonateAllUsers | |||
|       ) | |||
|     ) { | |||
|       return aId; | |||
|     } | |||
| 
 | |||
|     return null; | |||
|   } | |||
| } | |||
|  | |||
					Loading…
					
					
				
		Reference in new issue