ru.foodtechlab.lib.auth.service.domain.credential.entity.CredentialEntity Maven / Gradle / Ivy
package ru.foodtechlab.lib.auth.service.domain.credential.entity;
import com.rcore.domain.commons.entity.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import ru.foodtechlab.abe.domain.entities.BaseDeleteEntity;
import ru.foodtechlab.lib.auth.service.domain.confirmationCode.entity.ConfirmationCodeDestinationType;
import ru.foodtechlab.lib.auth.service.domain.confirmationCode.entity.ConfirmationCodeEntity;
import ru.foodtechlab.lib.auth.service.domain.role.entity.RoleEntity;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
/**
* Учетная запись
* Работает с данными для авторизации и доступами
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public class CredentialEntity extends BaseDeleteEntity {
/**
* Имя пользователя для авторизации (login/email)
*
*/
private String username;
/**
* Пароль для авторизации
*/
private String password;
private PhoneNumber phoneNumber;
private Email email;
/**
* Массив ролей учетной записи
*/
private List roles = new ArrayList<>();
private boolean isBlocked = false;
/**
* Спосою доставки кода авторизации
*/
private ConfirmationCodeDestinationType confirmationCodeDestinationType;
/**
* Персональный код авторизации
*/
private String personalConfirmationCode;
/**
* Тип кода авторизации
*/
private ConfirmationCodeEntity.Type confirmationCodeType = ConfirmationCodeEntity.Type.ONE_TIME;
@AllArgsConstructor
@NoArgsConstructor
@Data
@Builder
public static class Role {
/**
* Идентификатор роли
*/
private RoleEntity role;
/**
* Флаг - роль заблокированная для данной учетной записи
*/
private boolean isBlocked;
}
/**
*
* @param id - RoleEntity.id
* @return
*/
public Optional findRoleById(String id) {
return roles.stream()
.filter(r -> r.getRole().getId().equals(id))
.findFirst();
}
public boolean roleIsExist(String id) {
return findRoleById(id).isPresent();
}
public boolean roleIsBlocked(String id) {
return findRoleById(id).map(Role::isBlocked).orElse(false);
}
public boolean loginDetailsIsConfirmed(ConfirmationCodeDestinationType confirmationCodeDestinationType) {
if (confirmationCodeDestinationType.equals(ConfirmationCodeDestinationType.EMAIL))
return email.isConfirmed();
else
return phoneNumber.isConfirmed();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy