mirror of
https://gitee.com/willfree/minoaClientWindows_gradle.git
synced 2026-06-15 14:05:00 +08:00
忘记刚刚改了嘛了,通过测试呢,找到两个bug: 通知貌似有时候会重复;聊天界面没有小红点
This commit is contained in:
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
#\u4FEE\u6539\u914D\u7F6E\u6587\u4EF6
|
||||
#Tue Apr 07 23:50:28 CST 2020
|
||||
#Wed Apr 08 00:41:05 CST 2020
|
||||
KeyName=/testKey_v3
|
||||
loginUserName=466D1203678EFB16BE85C8A02E1486B6
|
||||
ndnBlockChainIPAddress=116.77.74.139
|
||||
@@ -7,6 +7,6 @@ ServerIPAddress=116.77.74.139
|
||||
ThreadNumberForFileTransfer=5
|
||||
ndnBlockChainPortAddress=9001
|
||||
DataPackagePrefix=/ndn/edu/pkusz/OA
|
||||
LoginStatus=false
|
||||
LoginStatus=true
|
||||
loginPassWord=A1B9652D9ED940B8FC63453C50CB3337
|
||||
ServerPortAddress=6363
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
MIIEpAIBAAKCAQEA0vBF+wW8jIH+LMy+PYXQ24NBoEf5YIM1oX1YZwQ8S8PI8b/P
|
||||
e98fmRNdLBFLXbiRQLealwgwxyvv2KRceQM5bKIS6UkPfcJwRIn+E3UBgB+7HBn9
|
||||
bpQr0ZtkHnHtt2baxVHyI2sQgrGg26u2McdzagmzvcWlF82iT2MpUTpXU1f+fpZj
|
||||
pKwcwAuuF77CM4k3YN63G7b9m8Kuo5/AsTSAUBZ9RfzHV9f/nWv/lh8SQ915EAPO
|
||||
15F3kArz55T/zX8Fi+cqzbDcRCqauVEETVQuz9FYzTb92bqWG67Uz5199adrJvXL
|
||||
VDXn9SzNAEUYgztwYSbtGYcZxQMyN508N4/kmwIDAQABAoIBAQC8ZtyqWzJP8R87
|
||||
lldojefA2Fg6N27WM/sn1NOrl03fgewteFtyURRg3bm/TWcaO2qI+jR6J1eh3W1o
|
||||
+0yYzTdx/sSTVq0ebxdlMDcd28jOTgkKDXCdXnxQx9DBnJJs19IYoZt65PqnMM3y
|
||||
xkiB55n/INFIc4qEWydYbsINieVLStKfVc7KGM2Jtk237Em4DOd012bZnvfSqRhb
|
||||
2vKotNqOHOvQDuC5JVgGIGXDMQQrLp2gSDZeBLaArQA3bddmbRd6vACDH8Y3EAL2
|
||||
HyxOMaS384NolPl0S91J9Q/Qu6OeGpn/82t6412KQr/7P+FP/fX1KvqzBG8OEdpA
|
||||
ysv0ZXHxAoGBAOt6kgCYvUMfuT6JrSpgjIflfy3/gRML1rFoV34k+lg8+njNutfe
|
||||
XJT0XXqkROR8HAnYqNo9LomaA5wblxs7+IVtRf59oy2ENkNTPTpTZhNbhEQDQ9Zy
|
||||
XHQ18z1Afekt+3BgJh24PI/+uxukvQWtm4yhUsHwxmQvOzw+76VuE1tJAoGBAOVS
|
||||
OKho9CgdRbCMPrYObaQJp8KXItHgLM7bD4Q78QSmW2tyd+05+rJLo1A5fYjQFWaz
|
||||
mfTi5vzt/y/bSjOas/92Uu01Jq4GSG8ca0YMrMkm7wht199Gj6DqlNcBcYMK2Nis
|
||||
pJ6g/JUcCpnJ/PBBD8RjAcVqTA9veXS5bdM/ynzDAoGBANqn8yD4s2277HBkuVZL
|
||||
VtLtyN22jm1YJeCQigXJYmlDHjXEm0XN5dwu2QqDtLERiZufApO8EhWV3No9SF/y
|
||||
nP+Qi1kX4sjmJtj3VzhsrrE03qmk+n4LrUv/uMDcvM4kc4FS1rHsHNh86dNuclLu
|
||||
dSzttAIAiMgIj5GOw0qy3uh5AoGANDTrwStjql4/p1nGTRwrydSI5LwTqUQn70/f
|
||||
0HL1A+H7nhKJSvCQKlcd7v2nnqYAuUjaG+4sOBjWp8Z8thLaN6ZwaqBXFfdINkN6
|
||||
CJCKJaE/eePH6YTe3fuJtwkVFog5pdpn/9UWq7uejjR16RxmwobnuFHizwDJ3dD5
|
||||
N8amCpECgYASKJLCApJPcRmjhFTmVn36qQEZuZBbHSIrwt7s0HC8HUR77PmN0xk9
|
||||
AxeJCqoVyM8jdUN8AjBWmlzo+PAGW6Dt86BZnEaYdtCQ6Zc/svPmmxqN5jJVyIft
|
||||
w7J3Vt4w0i280wWIhj8gSTD2+5K6eYsEf2lbrf7xhQkZ/yG4bDb+Dg==
|
||||
@@ -1,25 +0,0 @@
|
||||
MIIEowIBAAKCAQEAii65kmHV3SpcX7rdwXziznKJBZb8ns8+RkDh9YOV47PPtFbr
|
||||
Yi2W9nWRj/S1XGnPopNXJ3cxyVQvoKchenkjDLRBdJkVn8Emowf/xVh4q4roP08c
|
||||
aZzfd5KV88Sd2+zRkiiwN+teNdYaY+qdpekOAICkbUkNhuzk/mfa++hZRXpfQR44
|
||||
TrFiXea+Y6JRLWTwCm55SMKsLYekoIkH0CcVBcsTwcD7fb1ceklUzAGnVNesnd4d
|
||||
8t7FkoWjYOjRDD+3IJs4JGz3ga1Vp6K5d2u/WdtANY2iUjTMY/S/hGLsiut7rswr
|
||||
8HpuUY9Z8nWLdKt1vFxpXDoTUx0NCaVazMn4XwIDAQABAoIBAFtoh1efIpM4R30I
|
||||
J1OsYnjA6YVqGNiRLZfZqd/4WLoVI4wfh3wdvmRw54a8ERD96d2Y7CluPt/4sbzr
|
||||
ckkLQzVPNJGGBvj0E7P7QaXxXXnU3MesdJYksOrvbASihu6J3SR7h/6l0193r2Nz
|
||||
OzAaWCna72pfzfP4V483cnP7grpjOXXfme7GxltI6I0sw16qCkg5COM2WfNYu0Gz
|
||||
Z21ss0i3Tx5Kauzrht/GsvxoUz8G+Ufo0vCK9Qb/Cd+2+CzoBUpkB5JLClGq5G7Y
|
||||
S/JFsTzlBMLmD0Deg72pOuURDQ7m7YAzv+F604mmWMj61mzM0AogZ2DiEDxxsazJ
|
||||
8RSPs7ECgYEA36TAGc4/QGl4OoiJpt3Kzw5lixElX5qrZ0Yz5SEZMhyXX2gZ+zRM
|
||||
HBJlp/vH5Sbs2qe7xvmr/B+W+pMqlLVAd7sJxGF7H9t83R1+XkN1a3vfW8h5V6c9
|
||||
EC9cTfDB/JGecmkBSHRRNgvp0eGzUOQTF9COpPhxLL4k/HFvQWOxPicCgYEAniyx
|
||||
Eut2zwG6bMpWCGkjie7IPAy8m0WEsbz0RNbjggBXGB4k9axv75yVEaWQ45Z84n2D
|
||||
B4BpdsXtRD4m34gPhs8+DM5C0G9aqV0it0VEGvyQgvzrpwjSxyuGitMjK/UMpUU9
|
||||
7HWSn8o+jSpb8ha+bPYnE9WJTA/9EM9p5JTRjwkCgYAJBciKQfvjSV4EXoXPKZuJ
|
||||
BvepyKNNXBwWKorlb5RopSamPrjtnYqEh2l6gXnrEMr1d1boDCKYJV4d9dn97eIP
|
||||
8ofOWHBzNJOxCAOVIfuWvoSgW1Ip6yFXidGbg18QJX/S9dGLbsXn/EsOoKBvXwQ2
|
||||
Lb/TgAJw36r2VE08whzgeQKBgHOZpBx4vE8UK0SBKBljhda0DeFdSaaNSyp/N2Ls
|
||||
Tj/fscdtmIN4cCKFpKjOATNj84ewRUgBQJLOmtZqOgzaKsbSxb2kLU6aY38uE0Yw
|
||||
OFMkzRT+ddeQ6kMn+1+Qab8hjAlprpUXZH6l18th7uriVm/aArtLL9nIQaK8g97M
|
||||
KM/JAoGBAKdQPJSEPTz6p1HIkLwbI6i5ZcrxnS/fPTlwZEi2I8Ka7pnelOfED5qd
|
||||
nvlLBKqIYWQLqCWwqA3I6pgM4ES1X10fsVhoA2jHlRj1/DOyy6gWwLAPacZ5cCBa
|
||||
RBn9bPLKA/86mO9GiT4UaTeTH1mi+JbS5RwAl556n0cV0o3aKYkX
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.9 KiB |
@@ -244,6 +244,28 @@ public class LoginOverviewController {
|
||||
return (long)-1;
|
||||
}
|
||||
|
||||
public void delTempChild(File file){
|
||||
if (file.isDirectory()) {
|
||||
String[] children = file.list();//获取文件夹下所有子文件夹
|
||||
// 递归删除目录中的子目录下
|
||||
for (int i = 0; i < children.length; i++) {
|
||||
delTempChild(new File(file, children[i]));
|
||||
}
|
||||
}
|
||||
// 目录空了,进行文件删除
|
||||
file.delete();
|
||||
}
|
||||
|
||||
// 删除本地的ndn/pid和ndn/tpm两个文件夹
|
||||
private void moveNdnKeyFile(){
|
||||
String dirpath1="./ndn/pid";
|
||||
String dirpath2="./ndn/tpm";
|
||||
File f1 = new File(dirpath1);
|
||||
File f2 = new File(dirpath2);
|
||||
delTempChild(f1);
|
||||
delTempChild(f2);
|
||||
}
|
||||
|
||||
// 导入密钥
|
||||
@FXML
|
||||
private void importSafeBag(){
|
||||
@@ -279,6 +301,9 @@ public class LoginOverviewController {
|
||||
}else{
|
||||
return ;
|
||||
}
|
||||
// 做一个清空本地密钥的动作
|
||||
// moveNdnKeyFile();
|
||||
// System.out.println("本地密钥文件已清空");
|
||||
// 将所选文件导入密钥
|
||||
String res= SecretKeyManageUtil.importSafeBag(file.getAbsolutePath());
|
||||
if(res.equals("success")){
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
package cn.minoa.view.login;
|
||||
|
||||
import cn.minoa.MainApp;
|
||||
import cn.minoa.dataRequestInterface.KeyManager;
|
||||
import cn.minoa.dataRequestInterface.MinoaDataAPI;
|
||||
import cn.minoa.dataRequestInterface.OrderInfo;
|
||||
import cn.minoa.dataRequestInterface.ResponseData;
|
||||
import cn.minoa.util.EncryptionUtil;
|
||||
import cn.minoa.util.KeyStorageUtil;
|
||||
import cn.minoa.util.StringByteLengthUtil;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.control.Alert;
|
||||
@@ -11,6 +15,13 @@ import javafx.scene.control.TextField;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.stage.Stage;
|
||||
import net.named_data.jndn.security.KeyChain;
|
||||
import net.named_data.jndn.security.pib.Pib;
|
||||
import net.named_data.jndn.security.pib.PibImpl;
|
||||
import net.named_data.jndn.security.tpm.Tpm;
|
||||
import net.named_data.jndn.security.tpm.TpmBackEnd;
|
||||
import net.named_data.jndn.security.v2.CertificateV2;
|
||||
import net.named_data.jndn.util.Common;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
@@ -52,13 +63,56 @@ public class RegisterOverviewController {
|
||||
@FXML
|
||||
private void handleRegister() {
|
||||
if (isRightContent()) {
|
||||
// 先拿到用户名,并修改keyChainNameString
|
||||
String username=nickname.getText().trim();
|
||||
String keyChainNameString="/"+username;
|
||||
// 请求数据
|
||||
OrderInfo orderInfo = new OrderInfo();
|
||||
ResponseData responseData = new ResponseData();
|
||||
Long seqLong = mainApp.getNewDataReqId();
|
||||
orderInfo.setSeq(seqLong);
|
||||
orderInfo.setJsonString(getRegisterJson());
|
||||
// 生成本地pid.db文件,获取公钥
|
||||
String publicKey="";
|
||||
try {
|
||||
CertificateV2 certificateV2= KeyManager.INSTANCE.initKeyChain(keyChainNameString).getCertification(keyChainNameString);
|
||||
publicKey = Common.base64Encode(certificateV2.wireEncode().getImmutableArray(), false);
|
||||
System.out.println("本地密钥keyName:"+keyChainNameString);
|
||||
System.out.println("publicKey: "+publicKey);
|
||||
} catch (Pib.Error | PibImpl.Error | Tpm.Error | TpmBackEnd.Error | CertificateV2.Error | KeyChain.Error error) {
|
||||
error.printStackTrace();
|
||||
// 弹窗报错
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("注册失败");
|
||||
alert.setHeaderText("注册账号失败");
|
||||
alert.setContentText("本地密钥生成失败:\n"+error.getMessage());
|
||||
alert.showAndWait();
|
||||
return ;
|
||||
}
|
||||
// 首先向区块链发送注册信息
|
||||
String pubkey=publicKey;
|
||||
// String pubkey = "Bv0CIgcvCAVsbGFhYQgDS0VZCAhyVwiW+kaX7QgMY2VydC1yZXF1ZXN0CAn9AAABcSP8KDIUCRgBAhkEAiVRABX9AU8wggFLMIIBAwYHKoZIzj0CATCB9wIBATAsBgcqhkjOPQEBAiEA/////wAAAAEAAAAAAAAAAAAAAAD///////////////8wWwQg/////wAAAAEAAAAAAAAAAAAAAAD///////////////wEIFrGNdiqOpPns+u9VXaYhrxlHQawzFOw9jvOPD4n0mBLAxUAxJ02CIbnBJNqZnjhE50mt4GffpAEQQRrF9Hy4SxCR/i85uVjpEDydwN9gS3rM6D0oTlF2JjClk/jQuL+Gn+bjufrSnwPnhYrzjNXazFezsu2QGg3v1H1AiEA/////wAAAAD//////////7zm+q2nF56E87nKwvxjJVECAQEDQgAEgCbgPaAk0RRziBAW/beuF5fBQdJdbZhtKrT+FRdXq6sqPxvhM3VQF+WrBehiA5TsKpLzwzNoE8kKt8gyevM4dxZHGwEDHBgHFggFbGxhYWEIA0tFWQgIclcIlvpGl+39AP0m/QD+DzIwMjAwMzI5VDAxNTEwMf0A/w8yMDIwMDQwOFQwMTUxMDAXSDBGAiEApxH8lJntSBM/NwV+laSdifH674+76xZnxVF4vKGaXXkCIQCj3OyzagvjqYrJmZ9f00PWVISXRyrIrKmwFbwzsk/hQw==";
|
||||
String phonenumber=phoneNumber.getText().trim();
|
||||
NDNBlockChainConnectClient ndnBlockChainConnectClient=new NDNBlockChainConnectClient();
|
||||
String resString=ndnBlockChainConnectClient.registeNewUser(username,
|
||||
phonenumber,pubkey);
|
||||
if(resString.equals("true")){
|
||||
System.out.println("用户【"+username+"】在区块链后台被成功注册");
|
||||
}else{
|
||||
System.out.println("区块链后台注册用户【"+username+"】失败: "+resString);
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
alert.setTitle("区块链注册失败");
|
||||
alert.setHeaderText("区块链注册失败");
|
||||
alert.setContentText("失败原因:\n"+resString);
|
||||
alert.showAndWait();
|
||||
return ;
|
||||
}
|
||||
// 获取注册时JSON
|
||||
String registerJson=getRegisterJson(publicKey);
|
||||
orderInfo.setJsonString(registerJson);
|
||||
System.out.println("getRegisterJson: " + orderInfo.getJsonString());
|
||||
// 向系统后台发送注册信息
|
||||
mainApp.minoaDataAPI.executeOrder("/register", orderInfo);
|
||||
responseData = mainApp.minoaDataAPI.dataCacheQueue.getResponseDataBySeq(seqLong);
|
||||
JSONObject jsonObject = responseData.praseRequestData();
|
||||
@@ -74,6 +128,9 @@ public class RegisterOverviewController {
|
||||
if (codeInteger == 200) {
|
||||
// 注册之后,使用getNews消耗掉新通知
|
||||
makeNoticesBeRead();
|
||||
// 将此时的keyChainName持久化到本地
|
||||
MinoaDataAPI.keyChainNameString=keyChainNameString;
|
||||
KeyStorageUtil.setKeyName(keyChainNameString);
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
||||
alert.setTitle("注册成功");
|
||||
@@ -86,7 +143,8 @@ public class RegisterOverviewController {
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("注册失败");
|
||||
alert.setHeaderText("注册失败");
|
||||
alert.setContentText("请确保你输入的手机号在系统白名单中,且登录名/账户/昵称并没有被注册。");
|
||||
alert.setContentText("请确保你输入的手机号在系统白名单中,且登录名/账户/昵称并没有被注册过。\n " +
|
||||
"您可以将用户名适当复杂化,以保证其在系统中的唯一性。");
|
||||
alert.showAndWait();
|
||||
}
|
||||
}
|
||||
@@ -237,12 +295,14 @@ public class RegisterOverviewController {
|
||||
}
|
||||
|
||||
// 获取注册请求字符串
|
||||
private String getRegisterJson() {
|
||||
private String getRegisterJson(String mPubKey) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
String mPubKey = "Bv0CsQcuCAR3Z2gwCANLRVkICH9+4yjVUHZaCAxjZXJ0LXJlcXVlc3QICf0AAAFv\nEUSBehQJGAECGQQANu6AFf0BJjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBANbFutCAZqFjHEa16tYvy4lBgi9/zixKWQzE9I72vaG2Imym+6KR30qkAQOK\nh0uE5RD2YsGhRK99rde+JOqIfk2/sunhp4nctOS5f4DeuOty58ekrO+Co9ZFmNBI\nmyk5i/hakjBEd/vdD7b1VadDRep5mWs3rgCinZOUfVaZ4oKqSws7ZWMvOSlRMOOi\nVzj53P4poY109S6aWmi3xKw/D76vfJapjdOB9Dg7S3rz0Rve1F/ajHCXWLt4XU3k\nUCiBn3Qmt6UD/MyDBaaUCfOvHTN6yVPtN6aOtYJVBAWt/P1ahLYhWkSm6KvrwMt0\nRzy2lw/lPriT99REItc/0wK6XwkCAwEAARZGGwEBHBcHFQgEd2doMAgDS0VZCAh/\nfuMo1VB2Wv0A/Sb9AP4PMjAxOTEyMTdUMDAzMTQw/QD/DzIwMTkxMjI3VDAwMzEz\nORf9AQCM+8WROXfi8WD9DydfLuSUxV0v3KW/Gn422/puDrkwwi1R2ogsAUc2O8pp\npuMLjWrQOTgE6ZTg80uWoDSUjjk44aMjkL2SAfp62vHRbGFx7+dckHAtF+DS6NH7\nX2vojFHOg6fksOE1M7XqLHmEEctZrFVSnQO7nB3DfRg+BqzZC/iy+8YAvTIvqA1c\nNsKYkmNITB80aM1v2H7fKnV4ZJpZnW71G5vbaPUseeklalQ2vEuBgWdd/1PL/0Ml\nI52npzqoeKAEpLp+vBwGN5ryGtWKB12nNimpMfevQAn/9BVIg59lZ7DIlE0sWmgW\nnwDxIXKebdViOejHlKwNAykxRRWw";
|
||||
// String mPubKey = "Bv0CsQcuCAR3Z2gwCANLRVkICH9+4yjVUHZaCAxjZXJ0LXJlcXVlc3QICf0AAAFv\nEUSBehQJGAECGQQANu6AFf0BJjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\nggEBANbFutCAZqFjHEa16tYvy4lBgi9/zixKWQzE9I72vaG2Imym+6KR30qkAQOK\nh0uE5RD2YsGhRK99rde+JOqIfk2/sunhp4nctOS5f4DeuOty58ekrO+Co9ZFmNBI\nmyk5i/hakjBEd/vdD7b1VadDRep5mWs3rgCinZOUfVaZ4oKqSws7ZWMvOSlRMOOi\nVzj53P4poY109S6aWmi3xKw/D76vfJapjdOB9Dg7S3rz0Rve1F/ajHCXWLt4XU3k\nUCiBn3Qmt6UD/MyDBaaUCfOvHTN6yVPtN6aOtYJVBAWt/P1ahLYhWkSm6KvrwMt0\nRzy2lw/lPriT99REItc/0wK6XwkCAwEAARZGGwEBHBcHFQgEd2doMAgDS0VZCAh/\nfuMo1VB2Wv0A/Sb9AP4PMjAxOTEyMTdUMDAzMTQw/QD/DzIwMTkxMjI3VDAwMzEz\nORf9AQCM+8WROXfi8WD9DydfLuSUxV0v3KW/Gn422/puDrkwwi1R2ogsAUc2O8pp\npuMLjWrQOTgE6ZTg80uWoDSUjjk44aMjkL2SAfp62vHRbGFx7+dckHAtF+DS6NH7\nX2vojFHOg6fksOE1M7XqLHmEEctZrFVSnQO7nB3DfRg+BqzZC/iy+8YAvTIvqA1c\nNsKYkmNITB80aM1v2H7fKnV4ZJpZnW71G5vbaPUseeklalQ2vEuBgWdd/1PL/0Ml\nI52npzqoeKAEpLp+vBwGN5ryGtWKB12nNimpMfevQAn/9BVIg59lZ7DIlE0sWmgW\nnwDxIXKebdViOejHlKwNAykxRRWw";
|
||||
String commandString = "/register";
|
||||
String userNameString = nickname.getText().trim();
|
||||
String passWordString = passwordField1.getText().trim();
|
||||
// 对密码进行加密
|
||||
passWordString= EncryptionUtil.getMD5String(passWordString);
|
||||
String phoneString = phoneNumber.getText().trim();
|
||||
Integer levelInteger = 0;
|
||||
try {
|
||||
@@ -261,12 +321,22 @@ public class RegisterOverviewController {
|
||||
// 验证输入内容格式
|
||||
private boolean isRightContent() {
|
||||
//验证昵称是否为空
|
||||
if (nickname.getText().trim().equals("")) {
|
||||
if (nickname.getText().trim().equals("")||nickname.getText().trim().contains("@")) {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("账号错误");
|
||||
alert.setHeaderText("你的账号错误");
|
||||
alert.setContentText("请确保你输入的账号(昵称)不为空。");
|
||||
alert.setContentText("请确保你输入的账号(昵称)不为空,且昵称中不包含\"@\"字符");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
//验证昵称是否为"default"
|
||||
if (nickname.getText().trim().equals("default")) {
|
||||
// 弹窗参考:https://code.makery.ch/blog/javafx-dialogs-official/
|
||||
Alert alert = new Alert(Alert.AlertType.WARNING);
|
||||
alert.setTitle("账号错误");
|
||||
alert.setHeaderText("你的账号错误");
|
||||
alert.setContentText("default为系统保留账号(昵称),请更换一个昵称。");
|
||||
alert.showAndWait();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -8,45 +8,45 @@
|
||||
<?import javafx.scene.layout.AnchorPane?>
|
||||
|
||||
<AnchorPane prefHeight="325.0" prefWidth="425.0" stylesheets="@Register.css" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="cn.minoa.view.login.RegisterOverviewController">
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<AnchorPane fx:id="upSplite" opacity="0.45" prefHeight="80.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<children>
|
||||
<ImageView fx:id="miniLogo" fitHeight="35.0" fitWidth="35.0" layoutX="-50.0" layoutY="-47.0" pickOnBounds="true" preserveRatio="true" AnchorPane.leftAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||
<Label layoutX="37.0" layoutY="12.0" prefHeight="35.0" text="minoa" AnchorPane.leftAnchor="40.0" AnchorPane.topAnchor="2.0">
|
||||
<font>
|
||||
<Font name="Arial Black" size="12.0" />
|
||||
</font></Label>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<GridPane layoutX="152.0" layoutY="110.0" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="100.0">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="108.0" minWidth="10.0" prefWidth="57.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="168.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<TextField fx:id="nickname" GridPane.columnIndex="1" />
|
||||
<PasswordField fx:id="passwordField1" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||
<Label text="账号" />
|
||||
<Label text="密码" GridPane.rowIndex="1" />
|
||||
<Label text="确认密码" GridPane.rowIndex="2" />
|
||||
<Label text="手机号" GridPane.rowIndex="3" />
|
||||
<Label text="验证码" GridPane.rowIndex="4" />
|
||||
<PasswordField fx:id="passwordField2" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
||||
<TextField fx:id="phoneNumber" GridPane.columnIndex="1" GridPane.rowIndex="3" />
|
||||
<TextField fx:id="verifyCode" prefHeight="23.0" prefWidth="134.0" GridPane.columnIndex="1" GridPane.rowIndex="4" />
|
||||
</children>
|
||||
</GridPane>
|
||||
<Button layoutX="112.0" layoutY="263.0" mnemonicParsing="false" onAction="#handleRegister" prefHeight="35.0" prefWidth="225.0" text="注册" AnchorPane.bottomAnchor="27.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="100.0" />
|
||||
<Text layoutX="332.0" layoutY="207.0" strokeType="OUTSIDE" strokeWidth="0.0" text="发送" AnchorPane.bottomAnchor="115.0" AnchorPane.rightAnchor="70.0" />
|
||||
<Button fx:id="sendVerificationCodeButton" mnemonicParsing="false" opacity="0.3" AnchorPane.bottomAnchor="111.0" AnchorPane.rightAnchor="65.0" />
|
||||
</children>
|
||||
<children>
|
||||
<Button mnemonicParsing="false" opacity="0.0" text="避免聚焦" />
|
||||
<AnchorPane fx:id="upSplite" opacity="0.45" prefHeight="80.0" prefWidth="200.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="100.0" prefWidth="160.0" AnchorPane.leftAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<children>
|
||||
<ImageView fx:id="miniLogo" fitHeight="35.0" fitWidth="35.0" layoutX="-50.0" layoutY="-47.0" pickOnBounds="true" preserveRatio="true" AnchorPane.leftAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||
<Label layoutX="37.0" layoutY="12.0" prefHeight="35.0" text="文件管理系统" AnchorPane.leftAnchor="40.0" AnchorPane.topAnchor="2.0">
|
||||
<font>
|
||||
<Font name="Arial Black" size="12.0" />
|
||||
</font></Label>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<GridPane layoutX="152.0" layoutY="110.0" AnchorPane.bottomAnchor="60.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="100.0">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="108.0" minWidth="10.0" prefWidth="57.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="168.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<TextField fx:id="nickname" GridPane.columnIndex="1" />
|
||||
<PasswordField fx:id="passwordField1" GridPane.columnIndex="1" GridPane.rowIndex="1" />
|
||||
<Label text="账号" />
|
||||
<Label text="密码" GridPane.rowIndex="1" />
|
||||
<Label text="确认密码" GridPane.rowIndex="2" />
|
||||
<Label text="手机号" GridPane.rowIndex="3" />
|
||||
<Label opacity="0.0" text="验证码" GridPane.rowIndex="4" />
|
||||
<PasswordField fx:id="passwordField2" GridPane.columnIndex="1" GridPane.rowIndex="2" />
|
||||
<TextField fx:id="phoneNumber" GridPane.columnIndex="1" GridPane.rowIndex="3" />
|
||||
<TextField fx:id="verifyCode" opacity="0.0" prefHeight="23.0" prefWidth="134.0" GridPane.columnIndex="1" GridPane.rowIndex="4" />
|
||||
</children>
|
||||
</GridPane>
|
||||
<Button layoutX="112.0" layoutY="263.0" mnemonicParsing="false" onAction="#handleRegister" prefHeight="35.0" prefWidth="225.0" text="注册" AnchorPane.bottomAnchor="27.0" AnchorPane.leftAnchor="100.0" AnchorPane.rightAnchor="100.0" />
|
||||
<Text layoutX="332.0" layoutY="207.0" opacity="0.0" strokeType="OUTSIDE" strokeWidth="0.0" text="发送" AnchorPane.bottomAnchor="115.0" AnchorPane.rightAnchor="70.0" />
|
||||
<Button fx:id="sendVerificationCodeButton" mnemonicParsing="false" opacity="0.0" AnchorPane.bottomAnchor="111.0" AnchorPane.rightAnchor="65.0" />
|
||||
</children>
|
||||
</AnchorPane>
|
||||
|
||||
Reference in New Issue
Block a user