1
0

nightly commit

This commit is contained in:
2021-01-20 22:57:41 +08:00
parent f64bf9a786
commit db96ec11a5
14 changed files with 360 additions and 19 deletions

View File

@@ -1,3 +1,117 @@
function cnn_api_tokenValid() {
return true;
// var cached_salt = undefined
/*
function cnn_api_common_salt(_username) {
// true or false
// gotten salt store in cached_salt.
var gotten_data = undefined;
$.ajax({
url: '/api/common/salt',
type: "POST",
async: false,
data: {
username: _username
},
success: function (data) {
gotten_data = data;
}
});
if (IsResponseOK(gotten_data)) {
cached_salt = gotten_data['data'];
return true;
} else return false;
}
function cnn_api_common_login(_username, password) {
// return true or false, token is managed by this js file self.
// if cached_salt is undefined, return false directly
if (typeof(cached_salt) == undefined) return false;
var gotten_data = undefined;
$.ajax({
url: '/api/common/login',
type: "POST",
async: false,
data: {
username: _username,
password: ComputPasswordWithSalt(password, cached_salt)
},
success: function (data) {
gotten_data = data;
}
});
if (IsResponseOK(gotten_data) && gotten_data['data'] != '') {
SetApiToken(gotten_data['data']);
cached_salt = undefined;
return true;
} else return false;
}
*/
function cnn_api_common_webLogin(_username, password) {
var gotten_data = undefined;
$.ajax({
url: '/api/common/webLogin',
type: "POST",
async: false,
data: {
username: _username,
password: password
},
success: function (data) {
gotten_data = data;
}
});
if (IsResponseOK(gotten_data) && gotten_data['data'] != '') {
SetApiToken(gotten_data['data']);
return true;
} else return false;
}
function cnn_api_common_logout() {
// return true or false
var gotten_data = undefined;
$.ajax({
url: '/api/common/logout',
type: "POST",
async: false,
data: {
token: GetApiToken()
},
success: function (data) {
gotten_data = data;
}
});
if (IsResponseOK(gotten_data) && gotten_data['data']) {
SetApiToken('');
return true;
} return false;
}
function cnn_api_common_tokenValid() {
// get from local database first, then judge it via post
// return true or false
var gotten_token = GetApiToken();
if (gotten_token == '') return false;
var gotten_data = undefined;
$.ajax({
url: '/api/common/tokenValid',
type: "POST",
async: false,
data: {
token: GetApiToken()
},
success: function (data) {
gotten_data = data;
}
});
if (IsResponseOK(gotten_data) && gotten_data['data']) return true;
else {
SetApiToken('');
return false;
}
}

View File

@@ -11,7 +11,7 @@ function cnn_headerNav_Insert() {
}
function cnn_headerNav_LoggedRefresh() {
if (cnn_api_tokenValid()) {
if (cnn_api_common_tokenValid()) {
// logged, show all nav button and logout button
$("#cnn-header-nav-home").show();
$("#cnn-header-nav-calendar").show();
@@ -41,8 +41,16 @@ function cnn_headerNav_BindEvents() {
});
});
// todo: bind logout
// bind logout
$("#cnn-header-user-logout").click(function() {
if (cnn_api_common_logout()) {
// ok, logout
// jump into home page again
window.location.href = '/web/home';
return;
} else alert($.i18n.prop("ccn-js-failToLogout"));
});
// bind burger menu
// copy from bulma website

View File

@@ -5,6 +5,45 @@ $(document).ready(function() {
cnn_headerNav_BindEvents();
cnn_headerNav_LoggedRefresh();
// bind login event
$("#ccn-login-form-login").click(StartLogin);
// apply i18n
ccn_i18n_ApplyLanguage();
});
});
function StartLogin() {
// disable all ui first
$("#ccn-login-form-login").attr("disabled",true);
$("#ccn-login-form-username").attr("disabled",true);
$("#ccn-login-form-password").attr("disabled",true);
// get form data
username = $("#ccn-login-form-username").val();
password = $("#ccn-login-form-password").val();
/*
// try get salt
if (cnn_api_common_salt(username)) {
// continue login
if (cnn_api_common_login(username, password)) {
// ok, logged
// jump into home page again
window.location.href = '/web/home';
} else alert($.i18n.prop("ccn-js-failToLogin"));
} else alert($.i18n.prop("ccn-js-failToLogin"));
*/
if (cnn_api_common_webLogin(username, password)) {
// ok, logged
// jump into home page again
window.location.href = '/web/home';
return;
} else alert($.i18n.prop("ccn-js-failToLogin"));
// retore ui
$("#ccn-login-form-login").removeAttr("disabled");
$("#ccn-login-form-username").removeAttr("disabled");
$("#ccn-login-form-password").removeAttr("disabled");
}

36
src/static/js/utils.js Normal file
View File

@@ -0,0 +1,36 @@
function ComputPasswordWithSalt(password, salt) {
return ComputeSHA256(ComputeSHA256(password) + salt.toString());
}
function ComputeSHA256(strl) {
var tempstr = new TextEncoder().encode(strl);
var hashedStrl = undefined
var shitpromise = crypto.subtle.digest('SHA-256', tempstr);
Promise.all(shitpromise).then(function(result) {
hashedStrl = result;
});
var hashArray = Array.from(new Uint8Array(hashedStrl));
var hashHex = hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
return hashHex.toLowerCase();
}
function IsResponseOK(data) {
if (typeof(data) == 'undefined') {
console.log("Fail to execute an api!");
return false;
}
if (!data['success']) {
console.log("Fail to execute an api! Reason:");
console.log(data['error']);
return false;
}
return true;
}
function GetApiToken() {
return ccn_localstorageAssist_Get('ccn-token', '');
}
function SetApiToken(value) {
ccn_localstorageAssist_Set('ccn-token', value);
}