Add: account_validator

This commit is contained in:
2018-07-18 20:50:14 +09:00
parent 4edd637b05
commit 53565189a2
6 changed files with 189 additions and 44 deletions
+54
View File
@@ -0,0 +1,54 @@
class AccountValidator {
constructor() {
this.patternMaestroID = /^[A-Za-z]{1}[A-Za-z0-9]{3,19}$/;
this.patternMaestroPW = /^[A-Za-z0-9]{4,16}$/;
}
isValidMaestroID(textID) {
if(!this.patternMaestroID.test(textID))
return false;
return true;
}
messageForInvalidMaestroID(textID) {
if(textID.length < AccountValidator.MAESTRO_ID_LENGTH_MINIMUM)
return "마에스트로 계정명은 " + AccountValidator.MAESTRO_ID_LENGTH_MINIMUM + "글자 이상이어야 합니다.";
else if(textID.length > AccountValidator.MAESTRO_ID_LENGTH_MAXIMUM)
return "마에스트로 계정명은 " + AccountValidator.MAESTRO_ID_LENGTH_MAXIMUM + "글자 이하이어야 합니다.";
else if(!(/^[A-Za-z]/.test(textID)))
return "마에스트로 계정명은 알파벳으로 시작해야 합니다.";
else if((/[^\w]/g).test(textID))
return "마에스트로 계정명은 알파벳과 숫자로만 적어주세요.";
}
isValidMaestroPW(textPW) {
if(!this.patternMaestroPW.test(textPW))
return false;
return true;
}
messageForInvalidMaestroPW(textPW) {
console.log(textPW);
if(textPW.length < AccountValidator.MAESTRO_PW_LENGTH_MINIMUM)
return "마에스트로의 암호는 " + AccountValidator.MAESTRO_PW_LENGTH_MINIMUM + "글자 이상이어야 합니다.";
else if(textPW.length > AccountValidator.MAESTRO_PW_LENGTH_MAXIMUM)
return "마에스트로의 암호는 " + AccountValidator.MAESTRO_PW_LENGTH_MAXIMUM + "글자 이하이어야 합니다.";
else if((/[^\w]/g).test(textPW))
return "마에스트로의 암호는 알파벳과 숫자로만 적어주세요.";
else
return "???";
}
}
AccountValidator.MAESTRO_ID_LENGTH_MINIMUM = 4;
AccountValidator.MAESTRO_ID_LENGTH_MAXIMUM = 20;
AccountValidator.MAESTRO_PW_LENGTH_MINIMUM = 4;
AccountValidator.MAESTRO_PW_LENGTH_MAXIMUM = 16;
+1
View File
@@ -10,6 +10,7 @@
<script type="text/javascript" src="./../../../resources/jquery/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="./../js/main.js"></script>
<script type="text/javascript" src="./../js/lib/account_validator.js"></script>
<script type="text/javascript" src="./../js/request_server.js"></script>
<script type="text/javascript">
$(document).ready(function() {
+33 -9
View File
@@ -38,15 +38,22 @@ let selectedAccountTypeText = "";
let tab1, tab2, tab3;
let accountValidator = new AccountValidator();
$(document).ready(function() {
tab1 = $("#page-tabs li").filter(":eq(0)");
tab2 = $("#page-tabs li").filter(":eq(1)");
tab3 = $("#page-tabs li").filter(":eq(2)");
});
function check_id() {
function checkMaestroID() {
maestro_name = $("#maestro_name").val();
if(!accountValidator.isValidMaestroID(maestro_name)) {
onErrorMaestroID(accountValidator.messageForInvalidMaestroID(maestro_name));
return;
}
sendRequestServer( //url, sendParams, onSuccess, onFail, isDebugMode);
"./../server/maestro/check_id.php",
"maestro_name=" + maestro_name,
@@ -58,20 +65,31 @@ function check_id() {
(errorMessage, errorCode) => {
isAvailableID = false;
onErrorMaestroID(errorMessage);
}
);
}
function onErrorMaestroID(message) {
if($("#error_message").length) {
$("#error_message").text(errorMessage);
$("#error_message").text(message);
}
$("#maestro_name").val("");
$("#maestro_name").focus();
}
);
function onErrorMaestroPW(message) {
if($("#error_message").length) {
$("#error_message").text(message);
}
$("#password").val("");
$("#password").focus();
}
function check_data() {
function checkData() {
if(!isAvailableID) {
$("#error_message").text("아이디 중복 확인을 해 주세요.");
$("#check_id").focus();
@@ -79,11 +97,15 @@ function check_data() {
}
password = $("#password").val();
if(password.length === 0) {
$("#error_message").text("패스워드를 입력해 주세요.");
$("#password").focus();
if(!accountValidator.isValidMaestroPW(password)) {
onErrorMaestroPW(accountValidator.messageForInvalidMaestroPW(password));
return;
}
// if(password.length === 0) {
// $("#error_message").text("패스워드를 입력해 주세요.");
// $("#password").focus();
// return;
// }
email = $("#email").val();
if(email.length === 0) {
@@ -110,6 +132,8 @@ function check_data() {
$(".account_type").append(selectedAccountTypeText);
$(".price_account").append(selectedAccountTypeText);
$("#error_message").text("");
$("#input_data").css("display", "none");
$("#register_account").css("display", "block");
@@ -170,7 +194,7 @@ function register_account() {
<div id="input_data">
(필수) 마에스트로 아이디 : <input type="text" id="maestro_name" value="test" >
<button id="check_id" onClick="check_id()">중복 확인</button><br/>
<button id="check_id" onClick="checkMaestroID()">중복 확인</button><br/>
(필수) 암호 : <input id="password" value="test" type="password" name="password"><br/>
(필수) 이메일 : <input id="email" value="test@test.com" name="email"><br/>
(필수) 학생 수 :
@@ -211,7 +235,7 @@ function register_account() {
</ul>
<div class="col alignCenter">
<a id="maestro_register" class="btn btn-sea width400" onClick="check_data()">등록 신청</a>
<a id="maestro_register" class="btn btn-sea width400" onClick="checkData()">등록 신청</a>
</div>
</div>
@@ -55,7 +55,7 @@ function get_maestro_list_by_name($maestroName) {
$query = "
SELECT MaestroID, Name, AccountType FROM moty_maestro
WHERE Name=? AND ActivateStatus=0
WHERE Name LIKE CONCAT('%', ?, '%') AND ActivateStatus=0
ORDER BY MaestroID DESC
";
$stmt = $db_conn->prepare($query);
+2
View File
@@ -13,6 +13,8 @@
<script src="https://code.jquery.com/qunit/qunit-2.6.0.js"></script>
<script src="../resources/js/phaser.min.js"></script>
<script src="../src/web/js/lib/account_validator.js"></script>
<script src="../src/game/typing/lib/typing_text_manager.js"></script>
<script src="../src/game/lib/score_manager.js"></script>
<script src="../src/game/lib/session_storage_manager.js"></script>
+93 -29
View File
@@ -1,3 +1,67 @@
//////////////////////////////////////////////////
// AccountValidator
let accountValidator = new AccountValidator();
QUnit.test( "AccountValidator - isValidMaestroID", function( assert ) {
let text = "";
assert.equal(accountValidator.isValidMaestroID(text), false, "isValidMaestroID - no text");
text = "1abcde";
assert.equal(accountValidator.isValidMaestroID(text), false, "isValidMaestroID - " + text);
text = "abc";
assert.equal(accountValidator.isValidMaestroID(text), false, "isValidMaestroID - " + text);
text = "a1b";
assert.equal(accountValidator.isValidMaestroID(text), false, "isValidMaestroID - " + text);
text = "abcdeabcdeabcdeabcdea";
assert.equal(accountValidator.isValidMaestroID(text), false, "isValidMaestroID - " + text);
text = "abcd";
assert.equal(accountValidator.isValidMaestroID(text), true, "isValidMaestroID - " + text);
text = "aA1Bccd";
assert.equal(accountValidator.isValidMaestroID(text), true, "isValidMaestroID - " + text);
text = "abcdeabcdeabcdeabcde";
assert.equal(accountValidator.isValidMaestroID(text), true, "isValidMaestroID - " + text);
});
QUnit.test( "AccountValidator - isValidMaestroPW", function( assert ) {
let text = "";
text = "";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "1";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "12";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "123";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "1234";
assert.equal(accountValidator.isValidMaestroPW(text), true, "isValidMaestroPW - " + text);
text = "12345";
assert.equal(accountValidator.isValidMaestroPW(text), true, "isValidMaestroPW - " + text);
text = "123456";
assert.equal(accountValidator.isValidMaestroPW(text), true, "isValidMaestroPW - " + text);
text = "1234567";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - no text");
text = "1abcde";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "abc";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "a1b";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "abcdeabcdeabcdeabcdea";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "abcd";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "aA1Bccd";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroPW - " + text);
text = "abcdeabcdeabcdeabcde";
assert.equal(accountValidator.isValidMaestroPW(text), false, "isValidMaestroID - " + text);
});
//////////////////////////////////////////////////
// TypingTextManager
@@ -140,15 +204,15 @@ dbConnectManager.setMaestroID(0);
dbConnectManager.setPlayerID(0);
dbConnectManager.setDateTime("2018-05-16", "14:50:00");
QUnit.test( "DBConnectManager - User login", function( assert ) {
QUnit.test( "DBConnectManager - Player login", function( assert ) {
let returnPlayerID = -1;
let done = assert.async();
setTimeout(function() {
dbConnectManager.requestCheckUserLogin(
dbConnectManager.requestCheckPlayerLogin(
"jisangs", "test", "111111",
(jsonData) => {
returnPlayerID = jsonData["UserID"];
returnPlayerID = jsonData["PlayerID"];
assert.equal(returnPlayerID, 31);
done();
},
@@ -162,7 +226,7 @@ QUnit.test( "DBConnectManager - User login", function( assert ) {
QUnit.test( "DBConnectManager - Player history", function( assert ) {
sessionStorageManager.maestroID = 1; // jisangs
sessionStorageManager.playerUserID = "8"; // 부현율
sessionStorageManager.playerID = "8"; // 부현율
sessionStorageManager.playingAppID = 29;
let date = "2018-05-16";
@@ -205,13 +269,13 @@ QUnit.test( "DBConnectManager - Player ranking", function( assert ) {
(type, rankingRecordManager) => {
assert.equal(rankingRecordManager.getRankAt(0), 1, "hour");
assert.equal(rankingRecordManager.getBestRecordAt(0), 302.921, "hour");
assert.equal(rankingRecordManager.getUserIDAt(0), 5, "hour");
assert.equal(rankingRecordManager.getUserNameAt(0), "김지유", "hour");
assert.equal(rankingRecordManager.getPlayerIDAt(0), 5, "hour");
assert.equal(rankingRecordManager.getPlayerNameAt(0), "김지유", "hour");
assert.equal(rankingRecordManager.getRankAt(5), 6, "hour");
assert.equal(rankingRecordManager.getBestRecordAt(5), 128.436, "hour");
assert.equal(rankingRecordManager.getUserIDAt(5), 22, "hour");
assert.equal(rankingRecordManager.getUserNameAt(5), "모윤건", "hour");
assert.equal(rankingRecordManager.getPlayerIDAt(5), 22, "hour");
assert.equal(rankingRecordManager.getPlayerNameAt(5), "모윤건", "hour");
done();
}
@@ -227,13 +291,13 @@ QUnit.test( "DBConnectManager - Player ranking", function( assert ) {
(type, rankingRecordManager) => {
assert.equal(rankingRecordManager.getRankAt(0), 1, "day");
assert.equal(rankingRecordManager.getBestRecordAt(0), 313.304, "day");
assert.equal(rankingRecordManager.getUserIDAt(0), 19, "day");
assert.equal(rankingRecordManager.getUserNameAt(0), "오지운", "day");
assert.equal(rankingRecordManager.getPlayerIDAt(0), 19, "day");
assert.equal(rankingRecordManager.getPlayerNameAt(0), "오지운", "day");
assert.equal(rankingRecordManager.getRankAt(17), 18, "day");
assert.equal(rankingRecordManager.getBestRecordAt(17), 65.337, "day");
assert.equal(rankingRecordManager.getUserIDAt(17), 20, "day");
assert.equal(rankingRecordManager.getUserNameAt(17), "김민성", "day");
assert.equal(rankingRecordManager.getPlayerIDAt(17), 20, "day");
assert.equal(rankingRecordManager.getPlayerNameAt(17), "김민성", "day");
done();
}
@@ -249,13 +313,13 @@ QUnit.test( "DBConnectManager - Player ranking", function( assert ) {
(type, rankingRecordManager) => {
assert.equal(rankingRecordManager.getRankAt(0), 1, "month");
assert.equal(rankingRecordManager.getBestRecordAt(0), 617.231, "month");
assert.equal(rankingRecordManager.getUserIDAt(0), 50, "month");
assert.equal(rankingRecordManager.getUserNameAt(0), "강민준", "month");
assert.equal(rankingRecordManager.getPlayerIDAt(0), 50, "month");
assert.equal(rankingRecordManager.getPlayerNameAt(0), "강민준", "month");
assert.equal(rankingRecordManager.getRankAt(17), 18, "month");
assert.equal(rankingRecordManager.getBestRecordAt(17), 216.279, "month");
assert.equal(rankingRecordManager.getUserIDAt(17), 9, "month");
assert.equal(rankingRecordManager.getUserNameAt(17), "신예성", "month");
assert.equal(rankingRecordManager.getPlayerIDAt(17), 9, "month");
assert.equal(rankingRecordManager.getPlayerNameAt(17), "신예성", "month");
done();
}
@@ -307,7 +371,7 @@ QUnit.test( "DBConnectManager - UpdateRecord", function( assert ) {
setTimeout(function() {
dbConnectManager.requestTodayBestRecord(
1, // maestro ID for "jisangs"
1, // user ID for jisangs
1, // Player ID for jisangs
101, // space_invaders app ID
(jsonData) => {
todayBestRecord = jsonData["BestRecord"];
@@ -322,7 +386,7 @@ QUnit.test( "DBConnectManager - UpdateRecord", function( assert ) {
setTimeout(function() {
dbConnectManager.updateTodayBestRecord(
1, // maestro ID for "jisangs"
1, // user ID for jisangs
1, // Player ID for jisangs
101, // space_invaders app ID
todayBestRecord + 1000 // new record
);
@@ -331,7 +395,7 @@ QUnit.test( "DBConnectManager - UpdateRecord", function( assert ) {
setTimeout(function() {
dbConnectManager.requestTodayBestRecord(
1, // maestro ID for "jisangs"
1, // user ID for jisangs
1, // Player ID for jisangs
101, // space_invaders app ID
(jsonData) => {
let bestRecord = jsonData["BestRecord"];
@@ -497,11 +561,11 @@ QUnit.test( "RankingRecordManager - getAt", function( assert ) {
assert.equal(rankingRecordManager.getRankAt(0), 4);
assert.equal(rankingRecordManager.getRankAt(4), 8);
assert.equal(rankingRecordManager.getUserIDAt(0), 1);
assert.equal(rankingRecordManager.getUserIDAt(4), 5);
assert.equal(rankingRecordManager.getPlayerIDAt(0), 1);
assert.equal(rankingRecordManager.getPlayerIDAt(4), 5);
assert.equal(rankingRecordManager.getUserNameAt(0), "김남희");
assert.equal(rankingRecordManager.getUserNameAt(4), "신현주");
assert.equal(rankingRecordManager.getPlayerNameAt(0), "김남희");
assert.equal(rankingRecordManager.getPlayerNameAt(4), "신현주");
assert.equal(rankingRecordManager.getBestRecordAt(0), 1400);
assert.equal(rankingRecordManager.getBestRecordAt(4), 600);
@@ -544,15 +608,15 @@ QUnit.test( "SessionStorageManager - PlayerName", function( assert ) {
assert.equal(sessionStorageManager.playerName, null, "playerName");
});
QUnit.test( "SessionStorageManager - playerUserID", function( assert ) {
QUnit.test( "SessionStorageManager - playerPlayerID", function( assert ) {
sessionStorageManager.clear();
assert.equal(sessionStorageManager.playerUserID, null, "playerUserID");
assert.equal(sessionStorageManager.playerID, null, "playerID");
sessionStorageManager.playerUserID = 1;
assert.equal(sessionStorageManager.playerUserID, 1, "playerUserID");
sessionStorageManager.playerID = 1;
assert.equal(sessionStorageManager.playerID, 1, "playerID");
sessionStorageManager.removeItem("playerUserID");
assert.equal(sessionStorageManager.playerUserID, null, "playerUserID");
sessionStorageManager.removeItem("playerID");
assert.equal(sessionStorageManager.playerID, null, "playerID");
});
QUnit.test( "SessionStorageManager - playingAppName", function( assert ) {