提交 5627213c 编写于 作者: 智布道's avatar 智布道 👁

Add `IdsUserStoreService` interface

上级 8d2fb73e
......@@ -15,11 +15,17 @@
*/
package com.fujieid.jap.ids;
import com.fujieid.jap.core.spi.JapServiceLoader;
import com.fujieid.jap.ids.config.IdsConfig;
import com.fujieid.jap.ids.context.IdsContext;
import com.fujieid.jap.ids.exception.IdsException;
import com.fujieid.jap.ids.model.IdsConsts;
import com.fujieid.jap.ids.model.UserInfo;
import com.fujieid.jap.ids.pipeline.IdsFilterPipeline;
import com.fujieid.jap.ids.pipeline.IdsSignInPipeline;
import com.fujieid.jap.ids.service.IdsClientDetailService;
import com.fujieid.jap.ids.service.IdsIdentityService;
import com.fujieid.jap.ids.service.IdsUserService;
import com.fujieid.jap.ids.service.IdsUserStoreService;
import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;
......@@ -32,18 +38,50 @@ import java.io.Serializable;
* @since 1.0.0
*/
public class JapIds implements Serializable {
private static final String UNREGISTERED_IDS_CONTEXT = "Unregistered ids context.Please use `JapIds.registerContext(IdsContext)` to register ids context.";
private static IdsContext context;
private JapIds() {
}
public static void registerContext(IdsContext idsContext) {
if (null == context) {
throw new IdsException(UNREGISTERED_IDS_CONTEXT);
}
context = idsContext;
loadService();
loadPipeline();
}
private static void loadService() {
if (null == context.getClientDetailService()) {
context.setClientDetailService(JapServiceLoader.loadFirst(IdsClientDetailService.class));
}
if (null == context.getIdentityService()) {
context.setIdentityService(JapServiceLoader.loadFirst(IdsIdentityService.class));
}
if (null == context.getUserService()) {
context.setUserService(JapServiceLoader.loadFirst(IdsUserService.class));
}
if (null == context.getUserStoreService()) {
context.setUserStoreService(JapServiceLoader.loadFirst(IdsUserStoreService.class));
}
}
private static void loadPipeline() {
if (null == context.getFilterPipeline()) {
context.setFilterPipeline(JapServiceLoader.loadFirst(IdsFilterPipeline.class));
}
if (null == context.getSigninPipeline()) {
context.setSigninPipeline(JapServiceLoader.loadFirst(IdsSignInPipeline.class));
}
}
public static IdsContext getContext() {
if (null == context) {
throw new IdsException("Unregistered ids context.Please use `JapIds.registerContext(IdsContext)` to register ids context.");
throw new IdsException(UNREGISTERED_IDS_CONTEXT);
}
return context;
}
......@@ -53,15 +91,18 @@ public class JapIds implements Serializable {
}
public static void saveUserInfo(UserInfo userInfo, HttpServletRequest request) {
request.getSession().setAttribute(IdsConsts.OAUTH_USERINFO_CACHE_KEY, userInfo);
IdsContext context = getContext();
context.getUserStoreService().save(userInfo, request);
}
public static UserInfo getUserInfo(HttpServletRequest request) {
return (UserInfo) request.getSession().getAttribute(IdsConsts.OAUTH_USERINFO_CACHE_KEY);
IdsContext context = getContext();
return context.getUserStoreService().get(request);
}
public static void removeUserInfo(HttpServletRequest request) {
request.getSession().removeAttribute(IdsConsts.OAUTH_USERINFO_CACHE_KEY);
IdsContext context = getContext();
context.getUserStoreService().remove(request);
}
public static IdsConfig getIdsConfig() {
......
/*
* Copyright (c) 2020-2040, 北京符节科技有限公司 (support@fujieid.com & https://www.fujieid.com).
* <p>
* Licensed under the GNU LESSER GENERAL PUBLIC LICENSE 3.0;
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.gnu.org/licenses/lgpl.html
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.fujieid.jap.ids.service;
import com.fujieid.jap.ids.model.IdsConsts;
import com.fujieid.jap.ids.model.UserInfo;
import javax.servlet.http.HttpServletRequest;
/**
* When the user logs in, store and operate the user's login information
*
* @author yadong.zhang (yadong.zhang0415(a)gmail.com)
* @version 1.0.0
* @since 1.0.2
*/
public interface IdsUserStoreService {
/**
* Save user data, and store user information in {@link javax.servlet.http.HttpSession} by default.
* <p>
* Developers can implement this method to save user information in other media, such as cache, database, etc.
*
* @param userInfo User information after login
* @param request current HTTP request
*/
default void save(UserInfo userInfo, HttpServletRequest request) {
request.getSession().setAttribute(IdsConsts.OAUTH_USERINFO_CACHE_KEY, userInfo);
}
/**
* Get logged-in user information
*
* @param request current HTTP request
* @return UserInfo
*/
default UserInfo get(HttpServletRequest request) {
return (UserInfo) request.getSession().getAttribute(IdsConsts.OAUTH_USERINFO_CACHE_KEY);
}
/**
* Delete logged-in user information
*
* @param request current HTTP request
*/
default void remove(HttpServletRequest request) {
request.getSession().removeAttribute(IdsConsts.OAUTH_USERINFO_CACHE_KEY);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册