保誠-保戶業務員媒合平台
wayne
2022-02-17 97756c916b883444e57587af1bea4ab1acfd3de2
[update] 新增顧問狀態,利於後臺管理

修改2個檔案
新增3個檔案
40 ■■■■■ 已變更過的檔案
pamapi/src/doc/sql/20220217_w.sql 2 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/domain/Consultant.java 14 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/enums/ConsultantStatusEnum.java 6 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java 10 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantDisableException.java 8 ●●●●● 修補檔 | 檢視 | 原始 | 究查 | 歷程
pamapi/src/doc/sql/20220217_w.sql
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,2 @@
ALTER TABLE public.consultant ADD status varchar NULL;
UPDATE public.consultant SET status = 'AVAILABLE';
pamapi/src/main/java/com/pollex/pam/domain/Consultant.java
@@ -1,5 +1,6 @@
package com.pollex.pam.domain;
import com.pollex.pam.enums.ConsultantStatusEnum;
import com.pollex.pam.enums.GenderEnum;
import javax.persistence.*;
@@ -73,6 +74,11 @@
    @Column(name = "email")
    private String email;
    @Enumerated(value = EnumType.STRING)
    @Column(name = "status")
    private ConsultantStatusEnum status;
    public Long getId() {
        return id;
@@ -241,6 +247,14 @@
        this.email = email;
    }
    public ConsultantStatusEnum getStatus() {
        return status;
    }
    public void setStatus(ConsultantStatusEnum status) {
        this.status = status;
    }
    @Override
    public String toString() {
        return "Consultant{" +
pamapi/src/main/java/com/pollex/pam/enums/ConsultantStatusEnum.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,6 @@
package com.pollex.pam.enums;
public enum ConsultantStatusEnum {
    AVAILABLE,
    DISABLE
}
pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java
@@ -4,10 +4,12 @@
import com.pollex.pam.config.ApplicationProperties;
import com.pollex.pam.domain.Consultant;
import com.pollex.pam.enums.ConsultantDetailEnum;
import com.pollex.pam.enums.ConsultantStatusEnum;
import com.pollex.pam.repository.ConsultantRepository;
import com.pollex.pam.security.token.EServiceAuthenticationToken;
import com.pollex.pam.service.LoginRecordService;
import com.pollex.pam.service.dto.EServiceResponse;
import com.pollex.pam.web.rest.errors.ConsultantDisableException;
import com.pollex.pam.web.rest.errors.EServiceErrorException;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
@@ -38,6 +40,8 @@
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.*;
import static com.pollex.pam.enums.ConsultantStatusEnum.DISABLE;
@Component
public class EServiceAuthenticationProvider {
@@ -87,9 +91,13 @@
        }
    }
    private UsernamePasswordAuthenticationToken getConsultantToken(String account, String credential) {
    private UsernamePasswordAuthenticationToken getConsultantToken(String account, String credential) throws ConsultantDisableException {
        Consultant consultant = consultantRepository.findOneByAgentNo(account).orElseThrow(() -> new UsernameNotFoundException("該顧問資料並不存在於媒合平台系統中"));
        if(consultant.getStatus() == DISABLE) {
            throw new ConsultantDisableException();
        }
        List<GrantedAuthority> grantedAuths = Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"));
        UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(account, credential, grantedAuths);
pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantDisableException.java
¤ñ¹ï·sÀÉ®×
@@ -0,0 +1,8 @@
package com.pollex.pam.web.rest.errors;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.UNAUTHORIZED, reason = "顧問帳號目前停用中")
public class ConsultantDisableException extends RuntimeException {
}