richie
5 years ago
7 changed files with 437 additions and 1 deletions
@ -0,0 +1,54 @@ |
|||||||
|
package com.fanruan.api.decision; |
||||||
|
|
||||||
|
import com.fanruan.api.log.LogKit; |
||||||
|
import com.fanruan.api.util.StringKit; |
||||||
|
import com.fr.base.Base64; |
||||||
|
import com.fr.base.ServerConfig; |
||||||
|
import com.fr.decision.webservice.utils.DecisionServiceConstants; |
||||||
|
import com.fr.stable.StringUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-09-19 |
||||||
|
* 常规工具类 |
||||||
|
*/ |
||||||
|
public class CommonKit { |
||||||
|
|
||||||
|
/** |
||||||
|
* 这个方法用于判断从前端返回服务器端的密码是否有被修改过 |
||||||
|
* |
||||||
|
* @param password 从前端返回的密码文本 |
||||||
|
* @return 如果密码没有被修改过就返回true,否则就返回false |
||||||
|
*/ |
||||||
|
public static boolean isDefaultPasswordHolderString(String password) { |
||||||
|
return DecisionServiceConstants.DEFAULT_PASSWORD.equals(password); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取默认密码占位符 |
||||||
|
* |
||||||
|
* @return 默认密码占位符 |
||||||
|
*/ |
||||||
|
public static String fetchDefaultPasswordHolderString() { |
||||||
|
return DecisionServiceConstants.DEFAULT_PASSWORD; |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 将base64编码的字符串转为常规的字符串 |
||||||
|
* |
||||||
|
* @param encodeStr base64编码的字符串 |
||||||
|
* @return 常规字符串 |
||||||
|
*/ |
||||||
|
public static String getBase64DecodeStr(String encodeStr) { |
||||||
|
try { |
||||||
|
if (StringUtils.isNotEmpty(encodeStr)) { |
||||||
|
return new String(Base64.decode(encodeStr), ServerConfig.getInstance().getServerCharset()); |
||||||
|
} |
||||||
|
} catch (Exception e) { |
||||||
|
LogKit.error(e.getMessage(), e); |
||||||
|
} |
||||||
|
|
||||||
|
return StringKit.EMPTY; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,39 @@ |
|||||||
|
package com.fanruan.api.decision; |
||||||
|
|
||||||
|
import com.fanruan.api.decision.middle.ReadOnlyUser; |
||||||
|
import com.fr.decision.authority.data.User; |
||||||
|
import com.fr.decision.webservice.utils.UserSourceFactory; |
||||||
|
import com.fr.decision.webservice.utils.user.source.UserSource; |
||||||
|
import com.fr.decision.webservice.v10.user.UserService; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-09-19 |
||||||
|
*/ |
||||||
|
public class UserKit { |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据用户名获取这个用户的来源 |
||||||
|
* |
||||||
|
* @param username 用户名 |
||||||
|
* @return 用户来源 |
||||||
|
* @throws Exception 如果在获取用户的过程中出错了,则抛出此异常 |
||||||
|
*/ |
||||||
|
public static UserSource fetchUserSource(String username) throws Exception { |
||||||
|
User user = UserService.getInstance().getUserByUserName(username); |
||||||
|
return UserSourceFactory.getInstance().getUserSource(user); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据用户名获取用户信息 |
||||||
|
* |
||||||
|
* @param username 用户名 |
||||||
|
* @return 用户信息 |
||||||
|
* @throws Exception 如果获取用户出错,则抛出此异常 |
||||||
|
*/ |
||||||
|
public static ReadOnlyUser getReadOnlyUser(String username) throws Exception { |
||||||
|
User user = UserService.getInstance().getUserByUserName(username); |
||||||
|
return ReadOnlyUser.build(user.getUserName(), user.getPassword(), user.getRealName()); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,25 @@ |
|||||||
|
package com.fanruan.api.decision.auth; |
||||||
|
|
||||||
|
import com.fr.decision.authorize.impl.AbstractPassport; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-09-19 |
||||||
|
* 认证方式 |
||||||
|
*/ |
||||||
|
public abstract class BasePassport extends AbstractPassport { |
||||||
|
|
||||||
|
/** |
||||||
|
* 检查登录信息是否有效 |
||||||
|
* |
||||||
|
* @param username 用户名 |
||||||
|
* @param inputPassword 输入的密码 |
||||||
|
* @param savedPassword 配置文件中保存的密码 |
||||||
|
* @param hashPassword 哈希后的密码 |
||||||
|
* @return 登录凭证是有效的则返回true,否则返回false |
||||||
|
*/ |
||||||
|
public boolean checkTicket(String username, String inputPassword, String savedPassword, String hashPassword) { |
||||||
|
return false; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,40 @@ |
|||||||
|
package com.fanruan.api.decision.auth.bean; |
||||||
|
|
||||||
|
import com.fr.decision.authorize.Passport; |
||||||
|
import com.fr.decision.webservice.bean.authentication.PassportBean; |
||||||
|
import com.fr.third.fasterxml.jackson.annotation.JsonTypeInfo; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-09-19 |
||||||
|
* 用于表示不同认证方式的接口 |
||||||
|
*/ |
||||||
|
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class") |
||||||
|
public abstract class BasePassportBean<T extends Passport> extends PassportBean<T> { |
||||||
|
|
||||||
|
/** |
||||||
|
* 用于标记认证类型的字符串 |
||||||
|
* |
||||||
|
* @return 字符串 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public abstract String markType(); |
||||||
|
|
||||||
|
/** |
||||||
|
* 根据配置对象生成认证配置数据层对象 |
||||||
|
* |
||||||
|
* @param t 配置对象 |
||||||
|
* @return 配属数据层 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public abstract BasePassportBean<T> createPassportBean(T t); |
||||||
|
|
||||||
|
/** |
||||||
|
* 生成配置对象 |
||||||
|
* |
||||||
|
* @return 配置 |
||||||
|
*/ |
||||||
|
@Override |
||||||
|
public abstract Passport createPassport(); |
||||||
|
} |
@ -0,0 +1,45 @@ |
|||||||
|
package com.fanruan.api.decision.middle; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-09-19 |
||||||
|
*/ |
||||||
|
public class ReadOnlyUser { |
||||||
|
|
||||||
|
/** |
||||||
|
* 非空项,无默认值 |
||||||
|
*/ |
||||||
|
private String userName = null; |
||||||
|
/** |
||||||
|
* 非空项,无默认值 |
||||||
|
*/ |
||||||
|
private String password = null; |
||||||
|
|
||||||
|
/** |
||||||
|
* 姓名 |
||||||
|
*/ |
||||||
|
private String realName = null; |
||||||
|
|
||||||
|
public static ReadOnlyUser build(String userName, String password, String realName) { |
||||||
|
return new ReadOnlyUser(userName, password, realName); |
||||||
|
} |
||||||
|
|
||||||
|
private ReadOnlyUser(String userName, String password, String realName) { |
||||||
|
this.userName = userName; |
||||||
|
this.password = password; |
||||||
|
this.realName = realName; |
||||||
|
} |
||||||
|
|
||||||
|
public String getUserName() { |
||||||
|
return userName; |
||||||
|
} |
||||||
|
|
||||||
|
public String getPassword() { |
||||||
|
return password; |
||||||
|
} |
||||||
|
|
||||||
|
public String getRealName() { |
||||||
|
return realName; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,219 @@ |
|||||||
|
package com.fanruan.api.runtime; |
||||||
|
|
||||||
|
import com.fr.io.utils.ResourceIOUtils; |
||||||
|
import com.fr.stable.Filter; |
||||||
|
|
||||||
|
import java.io.IOException; |
||||||
|
import java.io.InputStream; |
||||||
|
|
||||||
|
/** |
||||||
|
* @author richie |
||||||
|
* @version 10.0 |
||||||
|
* Created by richie on 2019-09-19 |
||||||
|
* 操作运行环境下文件的工具方法 |
||||||
|
*/ |
||||||
|
public class ResourceKit { |
||||||
|
|
||||||
|
/** |
||||||
|
* 路径是否存在 |
||||||
|
* |
||||||
|
* @param target 路径 |
||||||
|
* @return 是否存在 |
||||||
|
*/ |
||||||
|
public static boolean exist(String target) { |
||||||
|
return ResourceIOUtils.exist(target); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建文件 |
||||||
|
* |
||||||
|
* @param file 文件路径 |
||||||
|
* @return 是否存在 |
||||||
|
*/ |
||||||
|
public static boolean createFile(String file) { |
||||||
|
return ResourceIOUtils.createFile(file); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 创建文件夹 |
||||||
|
* |
||||||
|
* @param dir 文件夹路径 |
||||||
|
* @return 是否成功 |
||||||
|
*/ |
||||||
|
public static boolean createDirectory(String dir) { |
||||||
|
return ResourceIOUtils.createDirectory(dir); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 是否为文件夹 |
||||||
|
* |
||||||
|
* @param path 路径 |
||||||
|
* @return 是否是文件夹 |
||||||
|
*/ |
||||||
|
public static boolean isDirectory(String path) { |
||||||
|
return ResourceIOUtils.isDirectory(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取文件或者文件夹的名称 |
||||||
|
* |
||||||
|
* @param path 路径 |
||||||
|
* @return 名称 |
||||||
|
*/ |
||||||
|
public static String getName(String path) { |
||||||
|
return ResourceIOUtils.getName(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列出路径下的所有内容的名称 |
||||||
|
* |
||||||
|
* @param dir 路径 |
||||||
|
* @return 所有内容名称List |
||||||
|
*/ |
||||||
|
public static String[] list(String dir) { |
||||||
|
return ResourceIOUtils.list(dir); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 列出路径下的所有符合要求的内容的名称 |
||||||
|
* |
||||||
|
* @param dir 路径 |
||||||
|
* @param filter 过滤器 |
||||||
|
* @return 所有内容名称List |
||||||
|
*/ |
||||||
|
public static String[] list(String dir, Filter<String> filter) { |
||||||
|
return ResourceIOUtils.list(dir, filter); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 文件夹是否存在 |
||||||
|
* |
||||||
|
* @param dir 文件夹 |
||||||
|
* @return 是否存在 |
||||||
|
*/ |
||||||
|
public static boolean isDirectoryExist(String dir) { |
||||||
|
return ResourceIOUtils.isDirectoryExist(dir); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static String getRealPath(String relativePath) { |
||||||
|
return ResourceIOUtils.getRealPath(relativePath); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 读取文件到流 |
||||||
|
* <p> |
||||||
|
* 相对路径下如果是仓库资源从仓库读取,其它从本地读取 |
||||||
|
* <p> |
||||||
|
* 据对路径按绝对路径读 |
||||||
|
* |
||||||
|
* @param path 路径 |
||||||
|
* @return 流 |
||||||
|
*/ |
||||||
|
public static InputStream read(String path) { |
||||||
|
return ResourceIOUtils.read(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 读取文件到bytes |
||||||
|
* |
||||||
|
* @param path 文件路径 |
||||||
|
* @return bytes |
||||||
|
*/ |
||||||
|
public static byte[] readBytes(String path) { |
||||||
|
return ResourceIOUtils.readBytes(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 写入数据流到文件 |
||||||
|
* |
||||||
|
* @param path 文件路径 |
||||||
|
* @param data 数据 |
||||||
|
*/ |
||||||
|
public static void write(String path, InputStream data) { |
||||||
|
ResourceIOUtils.write(path, data); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 写入字符串数据到文件 |
||||||
|
* |
||||||
|
* @param path 文件路径 |
||||||
|
* @param data 数据 |
||||||
|
*/ |
||||||
|
public static void write(String path, String data) { |
||||||
|
ResourceIOUtils.write(path, data); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 写入字节数组数据到文件 |
||||||
|
* |
||||||
|
* @param path 文件路径 |
||||||
|
* @param data 数据 |
||||||
|
*/ |
||||||
|
public static void write(String path, byte[] data) { |
||||||
|
ResourceIOUtils.write(path, data); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 获取父路径 |
||||||
|
* |
||||||
|
* @param path 路径 |
||||||
|
* @return 父路径 |
||||||
|
*/ |
||||||
|
public static String getParent(String path) { |
||||||
|
return ResourceIOUtils.getParent(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 从仓库删除 |
||||||
|
* |
||||||
|
* @param path 路径 |
||||||
|
* @return 是否删除成功 |
||||||
|
*/ |
||||||
|
public static boolean delete(String path) { |
||||||
|
return ResourceIOUtils.delete(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 文件的最后修改时间 |
||||||
|
* |
||||||
|
* @param path 文件路径 |
||||||
|
* @return 修改的时间戳 |
||||||
|
*/ |
||||||
|
public static long lastModified(String path) { |
||||||
|
return ResourceIOUtils.lastModified(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 文件大小 |
||||||
|
* |
||||||
|
* @param path 文件路径 |
||||||
|
* @return 文件字节数 |
||||||
|
*/ |
||||||
|
public static long getLength(String path) { |
||||||
|
return ResourceIOUtils.getLength(path); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 重命名 |
||||||
|
* <p> |
||||||
|
* 文件位置根据oldFile来确定 |
||||||
|
* |
||||||
|
* @param oldFile 原文件path |
||||||
|
* @param newFile 新文件path |
||||||
|
* @return 是否成功 |
||||||
|
*/ |
||||||
|
public static boolean renameTo(String oldFile, String newFile) { |
||||||
|
return ResourceIOUtils.renameTo(oldFile, newFile); |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 拷贝文件到某目录下 |
||||||
|
* |
||||||
|
* @param src 源文件 |
||||||
|
* @param dir 目标文件 |
||||||
|
*/ |
||||||
|
public static void copy(String src, String dir) throws IOException { |
||||||
|
ResourceIOUtils.copy(src, dir); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue