This is an automated email from the ASF dual-hosted git repository.
caishunfeng pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new bd34e66b8a [Fix-10076] queryUserByToken use server timezone (#10177)
bd34e66b8a is described below
commit bd34e66b8a493a2aa14af5884f2f7c13819004f2
Author: longtb <[email protected]>
AuthorDate: Mon May 23 09:54:11 2022 +0800
[Fix-10076] queryUserByToken use server timezone (#10177)
* [Fix-10076] queryUserByToken use server timezone
* [Fix-10076] queryUserByToken use server timezone
---
.../dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java | 4 +++-
.../api/interceptor/LoginHandlerInterceptorTest.java | 6 +++++-
.../java/org/apache/dolphinscheduler/dao/mapper/UserMapper.java | 6 ++++--
.../resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml | 2 +-
.../java/org/apache/dolphinscheduler/dao/mapper/UserMapperTest.java | 2 +-
5 files changed, 14 insertions(+), 6 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
index 2013348ed8..243928960b 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptor.java
@@ -37,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
+import java.util.Date;
+
/**
* login interceptor, must log in first
*/
@@ -71,7 +73,7 @@ public class LoginHandlerInterceptor implements
HandlerInterceptor {
return false;
}
} else {
- user = userMapper.queryUserByToken(token);
+ user = userMapper.queryUserByToken(token, new Date());
if (user == null) {
response.setStatus(HttpStatus.SC_UNAUTHORIZED);
logger.info("user token has expired");
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptorTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptorTest.java
index 67d34192d4..467cfa0e07 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptorTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/interceptor/LoginHandlerInterceptorTest.java
@@ -17,6 +17,8 @@
package org.apache.dolphinscheduler.api.interceptor;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import org.apache.dolphinscheduler.api.ApiApplicationServer;
@@ -45,6 +47,8 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
+import java.util.Date;
+
@ActiveProfiles(value = {ProfileType.H2})
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ApiApplicationServer.class)
@@ -81,7 +85,7 @@ public class LoginHandlerInterceptorTest {
// test token
String token = "123456";
when(request.getHeader("token")).thenReturn(token);
- when(userMapper.queryUserByToken(token)).thenReturn(mockUser);
+ when(userMapper.queryUserByToken(eq(token),
any(Date.class))).thenReturn(mockUser);
Assert.assertTrue(interceptor.preHandle(request, response, null));
// test disable user
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/UserMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/UserMapper.java
index bd611417c1..d31f4b460b 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/UserMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/UserMapper.java
@@ -21,6 +21,7 @@ import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.ibatis.annotations.Param;
+import java.util.Date;
import java.util.List;
import org.springframework.cache.annotation.CacheConfig;
@@ -83,7 +84,7 @@ public interface UserMapper extends BaseMapper<User> {
/**
* user page
*
- * @param page page
+ * @param page page
* @param userName userName
* @return user IPage
*/
@@ -126,9 +127,10 @@ public interface UserMapper extends BaseMapper<User> {
* query user by token
*
* @param token token
+ * @param now now date
* @return user
*/
- User queryUserByToken(@Param("token") String token);
+ User queryUserByToken(@Param("token") String token, @Param("now") Date
now);
/**
* query user by queue name
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
index b105679970..e38688939c 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/UserMapper.xml
@@ -97,7 +97,7 @@
<property name="alias" value="u"/>
</include>
from t_ds_user u ,t_ds_access_token t
- where u.id = t.user_id and token=#{token} and t.expire_time > NOW()
+ where u.id = t.user_id and token=#{token} and t.expire_time > #{now}
</select>
<select id="queryUserListByQueue"
resultType="org.apache.dolphinscheduler.dao.entity.User">
select
diff --git
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/UserMapperTest.java
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/UserMapperTest.java
index 0c66dd2486..1fd07f94c4 100644
---
a/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/UserMapperTest.java
+++
b/dolphinscheduler-dao/src/test/java/org/apache/dolphinscheduler/dao/mapper/UserMapperTest.java
@@ -303,7 +303,7 @@ public class UserMapperTest extends BaseDaoTest {
//insertOneAccessToken
AccessToken accessToken = insertOneAccessToken(user);
//queryUserByToken
- User userToken = userMapper.queryUserByToken(accessToken.getToken());
+ User userToken = userMapper.queryUserByToken(accessToken.getToken(),
new Date());
Assert.assertEquals(userToken, user);
}