Browse Source
Feature/add inactive as user role (#3024)
* Add INACTIVE as user role
* Update changelog
pull/3025/head
Thomas Kaul
11 months ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with
31 additions and
1 deletions
-
CHANGELOG.md
-
apps/api/src/app/user/user.controller.ts
-
apps/client/src/app/core/http-response.interceptor.ts
-
prisma/migrations/20240218173439_added_inactive_to_role/migration.sql
-
prisma/schema.prisma
|
|
@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file. |
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
|
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
|
|
|
|
|
|
|
## Unreleased |
|
|
|
|
|
|
|
### Added |
|
|
|
|
|
|
|
- Added `INACTIVE` as a new user role |
|
|
|
|
|
|
|
## 2.53.0 - 2024-02-18 |
|
|
|
|
|
|
|
### Added |
|
|
|
|
|
@ -2,7 +2,11 @@ import { HasPermission } from '@ghostfolio/api/decorators/has-permission.decorat |
|
|
|
import { HasPermissionGuard } from '@ghostfolio/api/guards/has-permission.guard'; |
|
|
|
import { PropertyService } from '@ghostfolio/api/services/property/property.service'; |
|
|
|
import { User, UserSettings } from '@ghostfolio/common/interfaces'; |
|
|
|
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; |
|
|
|
import { |
|
|
|
hasPermission, |
|
|
|
hasRole, |
|
|
|
permissions |
|
|
|
} from '@ghostfolio/common/permissions'; |
|
|
|
import type { RequestWithUser } from '@ghostfolio/common/types'; |
|
|
|
|
|
|
|
import { |
|
|
@ -59,6 +63,13 @@ export class UserController { |
|
|
|
public async getUser( |
|
|
|
@Headers('accept-language') acceptLanguage: string |
|
|
|
): Promise<User> { |
|
|
|
if (hasRole(this.request.user, 'INACTIVE')) { |
|
|
|
throw new HttpException( |
|
|
|
getReasonPhrase(StatusCodes.TOO_MANY_REQUESTS), |
|
|
|
StatusCodes.TOO_MANY_REQUESTS |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
return this.userService.getUser( |
|
|
|
this.request.user, |
|
|
|
acceptLanguage?.split(',')?.[0] |
|
|
|
|
|
@ -99,6 +99,16 @@ export class HttpResponseInterceptor implements HttpInterceptor { |
|
|
|
window.location.reload(); |
|
|
|
}); |
|
|
|
} |
|
|
|
} else if (error.status === StatusCodes.TOO_MANY_REQUESTS) { |
|
|
|
if (!this.snackBarRef) { |
|
|
|
this.snackBarRef = this.snackBar.open( |
|
|
|
$localize`Oops! It looks like you’re making too many requests. Please slow down a bit.` |
|
|
|
); |
|
|
|
|
|
|
|
this.snackBarRef.afterDismissed().subscribe(() => { |
|
|
|
this.snackBarRef = undefined; |
|
|
|
}); |
|
|
|
} |
|
|
|
} else if (error.status === StatusCodes.UNAUTHORIZED) { |
|
|
|
if (this.webAuthnService.isEnabled()) { |
|
|
|
this.router.navigate(['/webauthn']); |
|
|
|
|
|
@ -0,0 +1,2 @@ |
|
|
|
-- AlterEnum |
|
|
|
ALTER TYPE "Role" ADD VALUE 'INACTIVE'; |
|
|
@ -246,6 +246,7 @@ enum Provider { |
|
|
|
enum Role { |
|
|
|
ADMIN |
|
|
|
DEMO |
|
|
|
INACTIVE |
|
|
|
USER |
|
|
|
} |
|
|
|
|
|
|
|