All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ru.foodtechlab.lib.auth.service.domain.credential.entity.CredentialEntity Maven / Gradle / Ivy

There is a newer version: 4.1.0
Show newest version
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