commit
b584bead50
@ -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());
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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…
x
Reference in New Issue
Block a user