From bb77c5e3089fc3e9ccb520625b7798d81c99bfa2 Mon Sep 17 00:00:00 2001
From: 于紫祥_1901 <email@yuzixiang_1910>
Date: Fri, 06 Nov 2020 13:55:15 +0800
Subject: [PATCH] update
---
src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java b/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java
index 12ba56f..999813a 100644
--- a/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java
+++ b/src/main/java/com/moral/security/auth/login/LoginAuthenticationProvider.java
@@ -1,9 +1,11 @@
package com.moral.security.auth.login;
import com.moral.entity.Account;
+import com.moral.entity.Role;
import com.moral.security.exceptions.AccountExpiredBadCredentialsException;
import com.moral.security.model.UserContext;
import com.moral.service.AccountService;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
@@ -17,6 +19,7 @@
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
+import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
@@ -54,6 +57,7 @@
String password = (String) authentication.getCredentials();
LoginMode mode = (LoginMode) authentication.getDetails();
Account account = accountService.queryAccountByName(accountName).orElseThrow(() -> new UsernameNotFoundException("User not found: " + accountName));
+ List<Role> roleList = accountService.getRolesByAccountName(accountName);
Date expireTime = Optional.ofNullable(account.getExpireTime())
.orElseThrow(
()-> new AccountExpiredBadCredentialsException("Authentication Failed. Account has expired.")
@@ -66,11 +70,11 @@
throw new BadCredentialsException("Authentication Failed. Username or Password not valid.");
}
- if (account.getRoles() == null) {
- throw new InsufficientAuthenticationException("User has no roles assigned");
+ if (CollectionUtils.isEmpty(roleList)) {
+ throw new InsufficientAuthenticationException("Authentication Failed. User has no roles assigned");
}
- List<GrantedAuthority> authorities = account.getRoles().stream()
- .map(authority -> new SimpleGrantedAuthority(authority.getName()))
+ List<GrantedAuthority> authorities = roleList.stream()
+ .map(authority -> new SimpleGrantedAuthority(authority.getRoleName()))
.collect(Collectors.toList());
UserContext userContext = UserContext.create(account.getAccountName(),mode,account.getOrganizationId(),authorities);
--
Gitblit v1.8.0