parent
							
								
									1ce37772d0
								
							
						
					
					
						commit
						5937135d8e
					
				@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.beans.requests; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gson.annotations.SerializedName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class LoginRequestBody { | 
				
			||||||
 | 
					    @SerializedName("user_name") | 
				
			||||||
 | 
					    private String userName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String password; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public LoginRequestBody(String userName, String password) { | 
				
			||||||
 | 
					        this.userName = userName; | 
				
			||||||
 | 
					        this.password = password; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUserName() { | 
				
			||||||
 | 
					        return userName; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUserName(String userName) { | 
				
			||||||
 | 
					        this.userName = userName; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPassword() { | 
				
			||||||
 | 
					        return password; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPassword(String password) { | 
				
			||||||
 | 
					        this.password = password; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,31 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.beans.requests; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gson.annotations.SerializedName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class RegisterRequestBody { | 
				
			||||||
 | 
					    @SerializedName("user_name") | 
				
			||||||
 | 
					    private String userName; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private String password; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public RegisterRequestBody(String userName, String password) { | 
				
			||||||
 | 
					        this.userName = userName; | 
				
			||||||
 | 
					        this.password = password; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUserName() { | 
				
			||||||
 | 
					        return userName; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUserName(String userName) { | 
				
			||||||
 | 
					        this.userName = userName; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPassword() { | 
				
			||||||
 | 
					        return password; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPassword(String password) { | 
				
			||||||
 | 
					        this.password = password; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package me.lensfrex.littlebusters.api.v1.responses; | 
					package me.lensfrex.littlebusters.api.v1.beans.responses; | 
				
			||||||
 | 
					
 | 
				
			||||||
import me.lensfrex.littlebusters.api.v1.beans.ProfileItem; | 
					import me.lensfrex.littlebusters.api.v1.beans.ProfileItem; | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package me.lensfrex.littlebusters.api.v1.responses; | 
					package me.lensfrex.littlebusters.api.v1.beans.responses; | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gson.annotations.SerializedName; | 
					import com.google.gson.annotations.SerializedName; | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1,4 +1,4 @@ | 
				
			|||||||
package me.lensfrex.littlebusters.api.v1.responses.general; | 
					package me.lensfrex.littlebusters.api.v1.beans.responses.general; | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.gson.annotations.SerializedName; | 
					import com.google.gson.annotations.SerializedName; | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,57 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.config; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.exceptions.ConfigureFileInvalidException; | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.utils.IOUtil; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.*; | 
				
			||||||
 | 
					import java.nio.charset.StandardCharsets; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ConfigLoader { | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final String globalConfigFilePath; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ConfigLoader(String globalConfigFilePath) { | 
				
			||||||
 | 
					        this.globalConfigFilePath = globalConfigFilePath; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String toSpecificPathForm(String uniformFilepath) { | 
				
			||||||
 | 
					        return uniformFilepath.replace("/", File.separator); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // todo: 脑子有点乱了,等以后再去重写一遍吧
 | 
				
			||||||
 | 
					    public void load() throws ConfigureFileInvalidException { | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            File globalConfigFile = new File(globalConfigFilePath); | 
				
			||||||
 | 
					            if (!globalConfigFile.exists()) { | 
				
			||||||
 | 
					                globalConfigFile.getParentFile().mkdirs(); | 
				
			||||||
 | 
					                globalConfigFile.createNewFile(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                InputStream defaultConfigInoutStream = getClass().getResourceAsStream("me/lensfrex/littlebusters/DefaultConfig.conf"); | 
				
			||||||
 | 
					                if (defaultConfigInoutStream == null) { | 
				
			||||||
 | 
					                    throw new NullPointerException("Can't find the default config file in program."); | 
				
			||||||
 | 
					                } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                GlobalConfig.configProperties.load(defaultConfigInoutStream); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                String defaultConfig = IOUtil.inputStreamToString(defaultConfigInoutStream, StandardCharsets.UTF_8); | 
				
			||||||
 | 
					                IOUtil.writeFile(defaultConfig.getBytes(StandardCharsets.UTF_8), globalConfigFile); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                return; | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					            FileInputStream configFileInputStream = new FileInputStream(globalConfigFile); | 
				
			||||||
 | 
					            GlobalConfig.configProperties.load(configFileInputStream); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } catch (FileNotFoundException e) { | 
				
			||||||
 | 
					            // todo: 这里应该换成使用日志输出
 | 
				
			||||||
 | 
					            System.err.printf("Error: Config file: %s doesn't exists.%n", globalConfigFilePath); | 
				
			||||||
 | 
					            e.printStackTrace(); | 
				
			||||||
 | 
					        } catch (Exception e) { | 
				
			||||||
 | 
					            // todo: 这里应该换成使用日志输出
 | 
				
			||||||
 | 
					            System.err.printf("Error: Some errors happened while reading config file: %s %n", globalConfigFilePath); | 
				
			||||||
 | 
					            System.err.printf("Error: %s%n", e.getMessage()); | 
				
			||||||
 | 
					            e.printStackTrace(); | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,12 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.config; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Properties; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class GlobalConfig { | 
				
			||||||
 | 
					    protected static final Properties configProperties = new Properties(); | 
				
			||||||
 | 
					    private GlobalConfig() {} | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String get(String key) { | 
				
			||||||
 | 
					        return configProperties.getProperty(key); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,9 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.dao; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.pojos.StoredKey; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface KeyDatabase { | 
				
			||||||
 | 
					    StoredKey getKeyContentByKeyName(String keyName); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int addKeyIntoDatabase(String keyContent, String keyName, int keyType); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,10 +0,0 @@ | 
				
			|||||||
package me.lensfrex.littlebusters.api.v1.dao; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.apache.ibatis.annotations.Param; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.Map; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public interface UserInformation { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    Map<String, Object> getBasicInfoByUserName(@Param("userName") String userName); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -1,9 +1,12 @@ | 
				
			|||||||
package me.lensfrex.littlebusters.api.v1.dao; | 
					package me.lensfrex.littlebusters.api.v1.dao; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.pojos.UserInformation; | 
				
			||||||
import org.apache.ibatis.annotations.Param; | 
					import org.apache.ibatis.annotations.Param; | 
				
			||||||
 | 
					
 | 
				
			||||||
public interface UserRegister { | 
					public interface UserOperators { | 
				
			||||||
    int addRegisterInfoIntoDb(@Param("uuid") String UUID, | 
					    int addRegisterInfoIntoDb(@Param("uuid") String UUID, | 
				
			||||||
                              @Param("userName") String userName, | 
					                              @Param("userName") String userName, | 
				
			||||||
                              @Param("password") String password); | 
					                              @Param("password") String password); | 
				
			||||||
} | 
					
 | 
				
			||||||
 | 
					    UserInformation getBasicInfoByUserName(@Param("userName") String userName); | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,11 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.exceptions; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ConfigureFileInvalidException extends Exception { | 
				
			||||||
 | 
					    public ConfigureFileInvalidException() { | 
				
			||||||
 | 
					        super("Error: Some errors happened while parsing configure file."); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public ConfigureFileInvalidException(String message) { | 
				
			||||||
 | 
					        super(message); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -1,24 +0,0 @@ | 
				
			|||||||
package me.lensfrex.littlebusters.api.v1.login; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import me.lensfrex.littlebusters.api.v1.dao.UserInformation; | 
					 | 
				
			||||||
import me.lensfrex.littlebusters.api.v1.utils.MyBatisUtil; | 
					 | 
				
			||||||
import org.apache.ibatis.session.SqlSession; | 
					 | 
				
			||||||
import org.mindrot.jbcrypt.BCrypt; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.Map; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class LoginIdentify { | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean identifyLoginUserName(String userName, String passwordSHA256) { | 
					 | 
				
			||||||
        SqlSession sqlSession = MyBatisUtil.getSqlSession(true); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        UserInformation mapper = sqlSession.getMapper(UserInformation.class); | 
					 | 
				
			||||||
        Map<String, Object> selectResult = mapper.getBasicInfoByUserName(userName); | 
					 | 
				
			||||||
        if (selectResult == null) { | 
					 | 
				
			||||||
            return false; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return BCrypt.checkpw(passwordSHA256, (String) selectResult.get("password")); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.pojos; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class StoredKey { | 
				
			||||||
 | 
					    public String keyContent; | 
				
			||||||
 | 
					    public String keyName; | 
				
			||||||
 | 
					    public int keyType; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public StoredKey(String keyContent, String keyName, int keyType) { | 
				
			||||||
 | 
					        this.keyContent = keyContent; | 
				
			||||||
 | 
					        this.keyName = keyName; | 
				
			||||||
 | 
					        this.keyType = keyType; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,26 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.pojos; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class UserInformation { | 
				
			||||||
 | 
					    public long uid; | 
				
			||||||
 | 
					    public String uuid; | 
				
			||||||
 | 
					    public String userName; | 
				
			||||||
 | 
					    public String password; | 
				
			||||||
 | 
					    public int accountStatus; | 
				
			||||||
 | 
					    public int accountType; | 
				
			||||||
 | 
					    public String phoneNumber; | 
				
			||||||
 | 
					    public boolean deleted; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public UserInformation(long uid, String uuid, String userName, String password, int accountStatus, | 
				
			||||||
 | 
					                           int accountType, String phoneNumber, boolean deleted) { | 
				
			||||||
 | 
					        this.uid = uid; | 
				
			||||||
 | 
					        this.uuid = uuid; | 
				
			||||||
 | 
					        this.userName = userName; | 
				
			||||||
 | 
					        this.password = password; | 
				
			||||||
 | 
					        this.accountStatus = accountStatus; | 
				
			||||||
 | 
					        this.accountType = accountType; | 
				
			||||||
 | 
					        this.phoneNumber = phoneNumber; | 
				
			||||||
 | 
					        this.deleted = deleted; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public UserInformation() {} | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,50 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.utils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.ByteArrayOutputStream; | 
				
			||||||
 | 
					import java.io.File; | 
				
			||||||
 | 
					import java.io.FileOutputStream; | 
				
			||||||
 | 
					import java.io.InputStream; | 
				
			||||||
 | 
					import java.nio.charset.Charset; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class IOUtil { | 
				
			||||||
 | 
					    public static String inputStreamToString(InputStream inputStream, Charset charSet) { | 
				
			||||||
 | 
					        byte[] bytes = readDataFromInputStream(inputStream); | 
				
			||||||
 | 
					        if (bytes != null) { | 
				
			||||||
 | 
					            return new String(bytes, charSet); | 
				
			||||||
 | 
					        } else { | 
				
			||||||
 | 
					            return null; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static byte[] readDataFromInputStream(InputStream inputStream) { | 
				
			||||||
 | 
					        return readDataFromInputStream(inputStream, 5);// read every 5kb in default
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static byte[] readDataFromInputStream(InputStream inputStream, int byteAllocation) { | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            ByteArrayOutputStream byteArrayInputStream = new ByteArrayOutputStream(); | 
				
			||||||
 | 
					            byte[] bytes = new byte[1024 * byteAllocation]; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for (int length; (length = inputStream.read(bytes)) != -1; ) { | 
				
			||||||
 | 
					                byteArrayInputStream.write(bytes, 0, length); | 
				
			||||||
 | 
					            } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            byteArrayInputStream.flush(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            inputStream.close(); | 
				
			||||||
 | 
					            byteArrayInputStream.close(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return byteArrayInputStream.toByteArray(); | 
				
			||||||
 | 
					        } catch (Exception e) { | 
				
			||||||
 | 
					            e.printStackTrace(); | 
				
			||||||
 | 
					            return null; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static void writeFile(byte[] bytes, File file) throws Exception { | 
				
			||||||
 | 
					        FileOutputStream fileOutputStream = new FileOutputStream(file); | 
				
			||||||
 | 
					        fileOutputStream.write(bytes); | 
				
			||||||
 | 
					        fileOutputStream.close(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,13 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.utils; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.time.LocalDateTime; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class Time { | 
				
			||||||
 | 
					    public static LocalDateTime getNowDayTime() { | 
				
			||||||
 | 
					        return LocalDateTime.now(); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static LocalDateTime getDateTimeAfterDays(int day) { | 
				
			||||||
 | 
					        return LocalDateTime.now().plusDays(day); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,14 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.utils.database; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.dao.UserOperators; | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.pojos.UserInformation; | 
				
			||||||
 | 
					import org.apache.ibatis.session.SqlSession; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class User { | 
				
			||||||
 | 
					    public UserInformation getUser(String userName) { | 
				
			||||||
 | 
					        SqlSession sqlSession = MyBatisUtil.getSqlSession(true); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        UserOperators mapper = sqlSession.getMapper(UserOperators.class); | 
				
			||||||
 | 
					        return mapper.getBasicInfoByUserName(userName); | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,55 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.utils.jwt; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.jsonwebtoken.*; | 
				
			||||||
 | 
					import io.jsonwebtoken.security.Keys; | 
				
			||||||
 | 
					import io.jsonwebtoken.security.SignatureException; | 
				
			||||||
 | 
					import me.lensfrex.littlebusters.api.v1.utils.Time; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.security.Key; | 
				
			||||||
 | 
					import java.time.LocalDateTime; | 
				
			||||||
 | 
					import java.util.HashMap; | 
				
			||||||
 | 
					import java.util.Map; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class JWTManager { | 
				
			||||||
 | 
					    // todo 时间有限先这样写能跑起来吧
 | 
				
			||||||
 | 
					    private final static Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String createNewJWT(String subject, String user, int invalidDays) { | 
				
			||||||
 | 
					        Map<String, Object> header = new HashMap<>(); | 
				
			||||||
 | 
					        header.put("alg", "HS256"); | 
				
			||||||
 | 
					        header.put("typ", "JWT"); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LocalDateTime now = Time.getNowDayTime(); | 
				
			||||||
 | 
					        Map<String, Object> payload = new HashMap<>(); | 
				
			||||||
 | 
					        payload.put("user", user); | 
				
			||||||
 | 
					        payload.put("start", now.toString()); | 
				
			||||||
 | 
					        payload.put("exp", now.plusDays(invalidDays).toString()); | 
				
			||||||
 | 
					        payload.put("api_ver", "1"); | 
				
			||||||
 | 
					//        payload.put("iss", machineId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return Jwts.builder() | 
				
			||||||
 | 
					                .setHeader(header) | 
				
			||||||
 | 
					                .setClaims(payload) | 
				
			||||||
 | 
					                .signWith(key) | 
				
			||||||
 | 
					                .compact(); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // 这里生成token之后还是放在redis里边缓存一下吧
 | 
				
			||||||
 | 
					        // 但是考虑到各种因素就先不实现吧(懒)
 | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean verifyToken(String token) { | 
				
			||||||
 | 
					        try { | 
				
			||||||
 | 
					            Jws<Claims> jws =  Jwts.parserBuilder() | 
				
			||||||
 | 
					                    .setSigningKey(key) | 
				
			||||||
 | 
					                    .build() | 
				
			||||||
 | 
					                    .parseClaimsJws(token); | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            System.out.println(jws); | 
				
			||||||
 | 
					        } catch (JwtException e) { | 
				
			||||||
 | 
					            System.err.println("Error: token is wrong: " + e.getMessage()); | 
				
			||||||
 | 
					            return false; | 
				
			||||||
 | 
					        } | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true; | 
				
			||||||
 | 
					    } | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,4 @@ | 
				
			|||||||
 | 
					package me.lensfrex.littlebusters.api.v1.utils.key; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class KeyManager { | 
				
			||||||
 | 
					} | 
				
			||||||
@ -0,0 +1,50 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!DOCTYPE mapper | 
				
			||||||
 | 
					        PUBLIC "-//mybatis.org//DTD Config 3.0//EN" | 
				
			||||||
 | 
					        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<mapper namespace="me.lensfrex.littlebusters.api.v1.dao.KeyDatabase"> | 
				
			||||||
 | 
					    <sql id="createDatabaseTables"> | 
				
			||||||
 | 
					        CREATE TABLE `account_basic` ( | 
				
			||||||
 | 
					                                         `uid` int(18) unsigned unique NOT NULL AUTO_INCREMENT COMMENT '用户id,1起,给人看的', | 
				
			||||||
 | 
					                                         `uuid` varchar(36) unique NOT NULL COMMENT '用户uuid,给某些api用的,目前并没有这些api', | 
				
			||||||
 | 
					                                         `user_name` varchar(32) unique NOT NULL COMMENT '用户名,可用于登录,最长不超过32位', | 
				
			||||||
 | 
					                                         `passwd` varchar(60) NOT NULL COMMENT '用户密码,明文密码经前端两次sha256初步加密后再经过后端进行bcrypt加密存储(round 10)\r\nbcrypto长度不应超过72位', | 
				
			||||||
 | 
					                                         `account_status` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '账户状态,分为 正常(0), 未激活(1), 已封禁(2)', | 
				
			||||||
 | 
					                                         `account_type` tinyint(1) NOT NULL DEFAULT 0 COMMENT '账号类型', | 
				
			||||||
 | 
					                                         `phone_number` varchar(11) DEFAULT NULL COMMENT '注册时使用的电话信息,目前暂不使用,可空,默认11位数字', | 
				
			||||||
 | 
					                                         `deleted` tinyint(1) NOT NULL DEFAULT 0 COMMENT '账号是否注销', | 
				
			||||||
 | 
					                                         `create_time` datetime NOT NULL DEFAULT current_timestamp() COMMENT '注册日期', | 
				
			||||||
 | 
					                                         `edit_time` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() COMMENT '账号信息修改时间', | 
				
			||||||
 | 
					                                         PRIMARY KEY (`uid`,`uuid`) USING BTREE, | 
				
			||||||
 | 
					                                         UNIQUE KEY `user_name` (`user_name`), | 
				
			||||||
 | 
					                                         UNIQUE KEY `uid` (`uid`), | 
				
			||||||
 | 
					                                         UNIQUE KEY `uuid` (`uuid`) | 
				
			||||||
 | 
					        ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        CREATE TABLE `account_info` ( | 
				
			||||||
 | 
					                                        `uid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户id,1000000起', | 
				
			||||||
 | 
					                                        `nick_name` varchar(16) NOT NULL COMMENT '用户昵称,长度限制为16个字', | 
				
			||||||
 | 
					                                        `desc` varchar(255) DEFAULT NULL COMMENT '用户留言信息', | 
				
			||||||
 | 
					                                        `sign` varchar(16) DEFAULT NULL COMMENT '用户的“个性签名”', | 
				
			||||||
 | 
					                                        `birthday` date DEFAULT NULL COMMENT '用户生日', | 
				
			||||||
 | 
					                                        `sex` int(1) DEFAULT NULL COMMENT '用户性别,null:未指定,1:男,2:女,其他值当未指定', | 
				
			||||||
 | 
					                                        `email` varchar(255) DEFAULT NULL COMMENT '注册时使用的电子邮件,仅用于展示,不用做登录使用,可空', | 
				
			||||||
 | 
					                                        `create_time` datetime NOT NULL COMMENT '用户信息创建时间', | 
				
			||||||
 | 
					                                        `edit_time` datetime NOT NULL COMMENT '用户信息修改时间', | 
				
			||||||
 | 
					                                        PRIMARY KEY (`uid`), | 
				
			||||||
 | 
					                                        UNIQUE KEY `uid` (`uid`) USING BTREE | 
				
			||||||
 | 
					        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        CREATE TABLE `keys` ( | 
				
			||||||
 | 
					                                `id` int(11) NOT NULL, | 
				
			||||||
 | 
					                                `key` varchar(4028) NOT NULL, | 
				
			||||||
 | 
					                                `key_name` varchar(255) NOT NULL, | 
				
			||||||
 | 
					                                `create_time` datetime NOT NULL DEFAULT current_timestamp(), | 
				
			||||||
 | 
					                                `edit_time` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), | 
				
			||||||
 | 
					                                `key_type` tinyint(1) NOT NULL, | 
				
			||||||
 | 
					                                PRIMARY KEY (`id`) | 
				
			||||||
 | 
					        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; | 
				
			||||||
 | 
					    </sql> | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,19 @@ | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!DOCTYPE mapper | 
				
			||||||
 | 
					        PUBLIC "-//mybatis.org//DTD Config 3.0//EN" | 
				
			||||||
 | 
					        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<mapper namespace="me.lensfrex.littlebusters.api.v1.dao.KeyDatabase"> | 
				
			||||||
 | 
					    <select id="getKeyContentByKeyName" resultType="me.lensfrex.littlebusters.api.v1.pojos.StoredKey" | 
				
			||||||
 | 
					            parameterType="java.lang.String"> | 
				
			||||||
 | 
					        select key_content as keyContent, key_name as keyName, key_type as keyType | 
				
			||||||
 | 
					        from `LittleBusters`.`keys` | 
				
			||||||
 | 
					        where key_name = #{keyName}; | 
				
			||||||
 | 
					    </select> | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <insert id="addKeyIntoDatabase" parameterType="me.lensfrex.littlebusters.api.v1.pojos.StoredKey"> | 
				
			||||||
 | 
					        insert into `LittleBusters`.`keys` (`key_content`, `key_name`, `key_type`) | 
				
			||||||
 | 
					        values (#{keyContent}, #{keyName}, #{keyType}); | 
				
			||||||
 | 
					    </insert> | 
				
			||||||
 | 
					</mapper> | 
				
			||||||
@ -0,0 +1,8 @@ | 
				
			|||||||
 | 
					# 数据库的类型,目前仅支持mysql和mariadb两种sql服务器 | 
				
			||||||
 | 
					database.dbType     = "mariadb" | 
				
			||||||
 | 
					database.url        = "jdbc:mariadb://localhost:3386/LittleBusters?characterEncoding=utf-8" | 
				
			||||||
 | 
					database.userName   = "root" | 
				
			||||||
 | 
					database.password   = "321654mid" | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JWT.signAlgo        = "HS256" | 
				
			||||||
 | 
					JWT.secretKey       = "asdifusaydiuasdczxcvmnbvamhdfgasjdhfuweygfiwqueygf" | 
				
			||||||
					Loading…
					
					
				
		Reference in new issue