Browse Source

Feature/add inactive as user role (#3024)

* Add INACTIVE as user role

* Update changelog
pull/3025/head
Thomas Kaul 8 months ago
committed by GitHub
parent
commit
be7f6bb657
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      CHANGELOG.md
  2. 13
      apps/api/src/app/user/user.controller.ts
  3. 10
      apps/client/src/app/core/http-response.interceptor.ts
  4. 2
      prisma/migrations/20240218173439_added_inactive_to_role/migration.sql
  5. 1
      prisma/schema.prisma

6
CHANGELOG.md

@ -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

13
apps/api/src/app/user/user.controller.ts

@ -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]

10
apps/client/src/app/core/http-response.interceptor.ts

@ -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']);

2
prisma/migrations/20240218173439_added_inactive_to_role/migration.sql

@ -0,0 +1,2 @@
-- AlterEnum
ALTER TYPE "Role" ADD VALUE 'INACTIVE';

1
prisma/schema.prisma

@ -246,6 +246,7 @@ enum Provider {
enum Role {
ADMIN
DEMO
INACTIVE
USER
}

Loading…
Cancel
Save