Browse Source

feat(auth): conditionally enable user signup and access token generation based on access token login status

pull/5912/head
Germán Martín 2 months ago
parent
commit
32b6903475
  1. 28
      apps/client/src/app/components/admin-overview/admin-overview.html
  2. 1
      apps/client/src/app/components/admin-users/admin-users.html
  3. 15
      apps/client/src/app/components/user-account-access/user-account-access.component.ts

28
apps/client/src/app/components/admin-overview/admin-overview.html

@ -30,19 +30,23 @@
} }
</div> </div>
</div> </div>
<div class="d-flex my-3"> @if (info?.isAccessTokenLoginEnabled !== false) {
<div class="w-50" i18n>User Signup</div> <div class="d-flex my-3">
<div class="w-50"> <div class="w-50" i18n>User Signup</div>
<mat-slide-toggle <div class="w-50">
color="primary" <mat-slide-toggle
hideIcon="true" color="primary"
[checked]=" hideIcon="true"
info.globalPermissions.includes(permissions.createUserAccount) [checked]="
" info.globalPermissions.includes(
(change)="onEnableUserSignupModeChange($event)" permissions.createUserAccount
/> )
"
(change)="onEnableUserSignupModeChange($event)"
/>
</div>
</div> </div>
</div> }
@if (hasPermissionToToggleReadOnlyMode) { @if (hasPermissionToToggleReadOnlyMode) {
<div class="d-flex my-3"> <div class="d-flex my-3">
<div class="w-50" i18n>Read-only Mode</div> <div class="w-50" i18n>Read-only Mode</div>

1
apps/client/src/app/components/admin-users/admin-users.html

@ -235,6 +235,7 @@
} }
<button <button
mat-menu-item mat-menu-item
[disabled]="info?.isAccessTokenLoginEnabled === false"
(click)="onGenerateAccessToken(element.id)" (click)="onGenerateAccessToken(element.id)"
> >
<span class="align-items-center d-flex"> <span class="align-items-center d-flex">

15
apps/client/src/app/components/user-account-access/user-account-access.component.ts

@ -5,7 +5,7 @@ import { NotificationService } from '@ghostfolio/client/core/notification/notifi
import { DataService } from '@ghostfolio/client/services/data.service'; import { DataService } from '@ghostfolio/client/services/data.service';
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service'; import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service'; import { UserService } from '@ghostfolio/client/services/user/user.service';
import { Access, User } from '@ghostfolio/common/interfaces'; import { Access, InfoItem, User } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
@ -59,6 +59,7 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
public hasPermissionToCreateAccess: boolean; public hasPermissionToCreateAccess: boolean;
public hasPermissionToDeleteAccess: boolean; public hasPermissionToDeleteAccess: boolean;
public hasPermissionToUpdateOwnAccessToken: boolean; public hasPermissionToUpdateOwnAccessToken: boolean;
public info: InfoItem;
public isAccessTokenHidden = true; public isAccessTokenHidden = true;
public updateOwnAccessTokenForm = this.formBuilder.group({ public updateOwnAccessTokenForm = this.formBuilder.group({
accessToken: ['', Validators.required] accessToken: ['', Validators.required]
@ -79,7 +80,8 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
private tokenStorageService: TokenStorageService, private tokenStorageService: TokenStorageService,
private userService: UserService private userService: UserService
) { ) {
const { globalPermissions } = this.dataService.fetchInfo(); this.info = this.dataService.fetchInfo();
const { globalPermissions } = this.info;
this.hasPermissionToDeleteAccess = hasPermission( this.hasPermissionToDeleteAccess = hasPermission(
globalPermissions, globalPermissions,
@ -102,10 +104,11 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
permissions.deleteAccess permissions.deleteAccess
); );
this.hasPermissionToUpdateOwnAccessToken = hasPermission( this.hasPermissionToUpdateOwnAccessToken =
this.user.permissions, hasPermission(
permissions.updateOwnAccessToken this.user.permissions,
); permissions.updateOwnAccessToken
) && this.info?.isAccessTokenLoginEnabled !== false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
} }

Loading…
Cancel
Save