Browse Source

Merge pull request #12292 from thingsboard/fix/user-info

Fix user info
pull/12298/head
Viacheslav Klimov 1 year ago
committed by GitHub
parent
commit
b584bead50
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 1
      application/src/main/java/org/thingsboard/server/controller/BaseController.java
  2. 3
      application/src/test/java/org/thingsboard/server/controller/AuthControllerTest.java
  3. 8
      ui-ngx/src/app/modules/home/pages/user/user.component.html
  4. 6
      ui-ngx/src/app/modules/home/pages/user/user.component.ts
  5. 14
      ui-ngx/src/app/shared/models/user.model.ts

1
application/src/main/java/org/thingsboard/server/controller/BaseController.java

@ -923,6 +923,7 @@ public abstract class BaseController {
UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getTenantId(), user.getId());
info.put("userCredentialsEnabled", userCredentials.isEnabled());
info.put("userActivated", userCredentials.getActivateToken() == null);
info.put("lastLoginTs", userCredentials.getLastLoginTs());
}

3
application/src/test/java/org/thingsboard/server/controller/AuthControllerTest.java

@ -83,6 +83,7 @@ public class AuthControllerTest extends AbstractControllerTest {
assertThat(user.getEmail()).isEqualTo(CUSTOMER_USER_EMAIL);
user = getUser(customerUserId);
assertThat(user.getAdditionalInfo().get("userCredentialsEnabled").asBoolean()).isTrue();
assertThat(user.getAdditionalInfo().get("userActivated").asBoolean()).isTrue();
assertThat(user.getAdditionalInfo().get("lastLoginTs").asLong()).isCloseTo(System.currentTimeMillis(), within(10000L));
}
@ -243,6 +244,7 @@ public class AuthControllerTest extends AbstractControllerTest {
user.setAuthority(Authority.TENANT_ADMIN);
user.setEmail("tenant-admin-2@thingsboard.org");
user = doPost("/api/user", user, User.class);
assertThat(getUser(user.getId()).getAdditionalInfo().get("userActivated").asBoolean()).isFalse();
UserCredentials userCredentials = userCredentialsDao.findByUserId(tenantId, user.getUuidId());
assertThat(userCredentials.getActivateTokenExpTime()).isCloseTo(System.currentTimeMillis() + TimeUnit.HOURS.toMillis(ttl), Offset.offset(120000L));
@ -289,6 +291,7 @@ public class AuthControllerTest extends AbstractControllerTest {
doPost("/api/noauth/activate", JacksonUtil.newObjectNode()
.put("activateToken", newActivationToken)
.put("password", "wefewe")).andExpect(status().isOk());
assertThat(getUser(user.getId()).getAdditionalInfo().get("userActivated").asBoolean()).isTrue();
}
@Test

8
ui-ngx/src/app/modules/home/pages/user/user.component.html

@ -25,25 +25,25 @@
<button mat-raised-button color="primary"
[disabled]="(isLoading$ | async)"
(click)="onEntityAction($event, 'disableAccount')"
[class.!hidden]="isEdit || !isUserCredentialPresent() || !isUserCredentialsEnabled()">
[class.!hidden]="isEdit || !isUserActivated() || !isUserCredentialsEnabled()">
{{'user.disable-account' | translate }}
</button>
<button mat-raised-button color="primary"
[disabled]="(isLoading$ | async)"
(click)="onEntityAction($event, 'enableAccount')"
[class.!hidden]="isEdit || !isUserCredentialPresent() || isUserCredentialsEnabled()">
[class.!hidden]="isEdit || !isUserActivated() || isUserCredentialsEnabled()">
{{'user.enable-account' | translate }}
</button>
<button mat-raised-button color="primary"
[disabled]="(isLoading$ | async)"
(click)="onEntityAction($event, 'displayActivationLink')"
[class.!hidden]="isEdit || isUserCredentialPresent()">
[class.!hidden]="isEdit || isUserActivated()">
{{'user.display-activation-link' | translate }}
</button>
<button mat-raised-button color="primary"
[disabled]="(isLoading$ | async)"
(click)="onEntityAction($event, 'resendActivation')"
[class.!hidden]="isEdit || isUserCredentialPresent()">
[class.!hidden]="isEdit || isUserActivated()">
{{'user.resend-activation' | translate }}
</button>
<button mat-raised-button color="primary"

6
ui-ngx/src/app/modules/home/pages/user/user.component.ts

@ -60,11 +60,11 @@ export class UserComponent extends EntityComponent<User> {
}
isUserCredentialsEnabled(): boolean {
return this.entity.additionalInfo.userCredentialsEnabled === true;
return this.entity?.additionalInfo?.userCredentialsEnabled === true;
}
isUserCredentialPresent(): boolean {
return isDefinedAndNotNull(this.entity?.additionalInfo?.userCredentialsEnabled);
isUserActivated(): boolean {
return this.entity?.additionalInfo?.userActivated === true;
}
buildForm(entity: User): UntypedFormGroup {

14
ui-ngx/src/app/shared/models/user.model.ts

@ -29,7 +29,19 @@ export interface User extends BaseData<UserId>, HasTenantId {
authority: Authority;
firstName: string;
lastName: string;
additionalInfo: any;
additionalInfo: Partial<UserAdditionalInfo>;
}
export interface UserAdditionalInfo {
userCredentialsEnabled: boolean;
userActivated: boolean;
description: string;
defaultDashboardId: string;
defaultDashboardFullscreen: boolean;
homeDashboardId: string;
homeDashboardHideToolbar: boolean;
lang: string;
[key: string]: any;
}
export enum ActivationMethod {

Loading…
Cancel
Save