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. 6
      apps/client/src/app/components/admin-overview/admin-overview.html
  2. 1
      apps/client/src/app/components/admin-users/admin-users.html
  3. 11
      apps/client/src/app/components/user-account-access/user-account-access.component.ts

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

@ -30,6 +30,7 @@
} }
</div> </div>
</div> </div>
@if (info?.isAccessTokenLoginEnabled !== false) {
<div class="d-flex my-3"> <div class="d-flex my-3">
<div class="w-50" i18n>User Signup</div> <div class="w-50" i18n>User Signup</div>
<div class="w-50"> <div class="w-50">
@ -37,12 +38,15 @@
color="primary" color="primary"
hideIcon="true" hideIcon="true"
[checked]=" [checked]="
info.globalPermissions.includes(permissions.createUserAccount) info.globalPermissions.includes(
permissions.createUserAccount
)
" "
(change)="onEnableUserSignupModeChange($event)" (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">

11
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 =
hasPermission(
this.user.permissions, this.user.permissions,
permissions.updateOwnAccessToken permissions.updateOwnAccessToken
); ) && this.info?.isAccessTokenLoginEnabled !== false;
this.changeDetectorRef.markForCheck(); this.changeDetectorRef.markForCheck();
} }

Loading…
Cancel
Save