Skip to content

Commit 92e31ed

Browse files
update auth
1 parent f740848 commit 92e31ed

6 files changed

+139
-128
lines changed

ygopro-auth.coffee

+26-23
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ or as follows, to use a specific set of permissions.
2626
###
2727
fs = require 'fs'
2828
loadJSON = require('load-json-file').sync
29+
loadJSONPromise = require('load-json-file')
2930
moment = require 'moment'
3031
moment.updateLocale('zh-cn', {
3132
relativeTime: {
@@ -57,16 +58,19 @@ add_log = (message) ->
5758
text = mt.format('YYYY-MM-DD HH:mm:ss') + " --> " + message + "\n"
5859
res = false
5960
try
60-
fs.appendFileSync("./logs/"+mt.format('YYYY-MM-DD')+".log", text)
61+
await util.promisfy(fs.appendFile)("./logs/"+mt.format('YYYY-MM-DD')+".log", text)
6162
res = true
6263
catch
6364
res = false
64-
return
65+
return res
6566

6667

6768
default_data = loadJSON('./data/default_data.json')
6869
setting_save = (settings) ->
69-
fs.writeFileSync(settings.file, JSON.stringify(settings, null, 2))
70+
try
71+
await util.promisfy(fs.writeFile)(settings.file, JSON.stringify(settings, null, 2))
72+
catch e
73+
add_log("save fail");
7074
return
7175

7276
default_data = loadJSON('./data/default_data.json')
@@ -78,16 +82,15 @@ catch
7882
setting_save(users)
7983

8084
save = () ->
81-
setting_save(users)
82-
return
85+
return await setting_save(users)
8386

8487
reload = () ->
8588
user_backup = users
8689
try
87-
users = loadJSON('./config/admin_user.json')
90+
users = await loadJSONPromise('./config/admin_user.json')
8891
catch
8992
users = user_backup
90-
add_log("Invalid user data JSON")
93+
await add_log("Invalid user data JSON")
9194
return
9295

9396
check_permission = (user, permission_required) ->
@@ -96,53 +99,53 @@ check_permission = (user, permission_required) ->
9699
if typeof(permission) != 'object'
97100
permission = users.permission_examples[_permission]
98101
if !permission
99-
add_log("Permision not set:"+_permission)
102+
await add_log("Permision not set:"+_permission)
100103
return false
101104
return permission[permission_required]
102105

103106
@auth = (name, pass, permission_required, action = 'unknown', no_log) ->
104-
reload()
107+
await reload()
105108
user = users.users[name]
106109
if !user
107-
add_log("Unknown user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
110+
await add_log("Unknown user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
108111
return false
109112
if user.password != pass
110-
add_log("Unauthorized user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
113+
await add_log("Unauthorized user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
111114
return false
112115
if !user.enabled
113-
add_log("Disabled user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
116+
await add_log("Disabled user login. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
114117
return false
115-
if !check_permission(user, permission_required)
116-
add_log("Permission denied. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
118+
if !await check_permission(user, permission_required)
119+
await add_log("Permission denied. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
117120
return false
118121
if !no_log
119-
add_log("Operation success. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
122+
await add_log("Operation success. User: "+ name+", Permission needed: "+ permission_required+", Action: " +action)
120123
return true
121124

122125
@add_user = (name, pass, enabled, permissions) ->
123-
reload()
126+
await reload()
124127
if users.users[name]
125128
return false
126129
users.users[name] = {
127130
"password": pass,
128131
"enabled": enabled,
129132
"permissions": permissions
130133
}
131-
save()
134+
await save()
132135
return true
133136

134137
@delete_user = (name) ->
135-
reload()
138+
await reload()
136139
if !users.users[name]
137140
return false
138141
delete users.users[name]
139-
save()
140-
return true
142+
await save()
143+
return
141144

142145
@update_user = (name, key, value) ->
143-
reload()
146+
await reload()
144147
if !users.users[name]
145148
return false
146149
users.users[name][key] = value
147-
save()
148-
return true
150+
await save()
151+
return

ygopro-auth.js

+38-31
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ygopro-pre.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ var packDatas = function (callback) {
480480
function requestListener(req, res) {
481481
var u = url.parse(req.url, true);
482482

483-
if (!auth.auth(u.query.username, u.query.password, "pre_dashboard", "pre_dashboard")) {
483+
if (!await auth.auth(u.query.username, u.query.password, "pre_dashboard", "pre_dashboard")) {
484484
res.writeHead(403);
485485
res.end("Auth Failed.");
486486
return;
@@ -505,7 +505,7 @@ function requestListener(req, res) {
505505
else if (u.pathname === '/api/load_db') {
506506
res.writeHead(200);
507507
res.end(u.query.callback+'({"message":"开始加载数据库。"});');
508-
loadAllDbs(() => { });
508+
await util.promisify(loadAllDbs)();
509509
}
510510
else if (u.pathname === '/api/fetch_datas') {
511511
res.writeHead(200);
@@ -514,23 +514,23 @@ function requestListener(req, res) {
514514
}
515515
else if (u.pathname === '/api/push_datas') {
516516
res.writeHead(200);
517-
res.end(u.query.callback+'({"message":"开始上传数据。"});');
518-
pushDatas(() => { });
517+
res.end(u.query.callback + '({"message":"开始上传数据。"});');
518+
await util.promisify(pushDatas)();
519519
}
520520
else if (u.pathname === '/api/write_to_file') {
521521
res.writeHead(200);
522522
res.end(u.query.callback+'({"message":"开始写列表页。"});');
523-
writeToFile(u.query.message, () => { });
523+
await util.promisify(writeToFile)(u.query.message);
524524
}
525525
else if (u.pathname === '/api/copy_to_ygopro') {
526526
res.writeHead(200);
527527
res.end(u.query.callback+'({"message":"开始更新到服务器。"});');
528-
copyToYGOPRO(() => { });
528+
await util.promisify(copyToYGOPRO)();
529529
}
530530
else if (u.pathname === '/api/pack_data') {
531531
res.writeHead(200);
532532
res.end(u.query.callback+'({"message":"开始生成更新包。"});');
533-
packDatas(() => { });
533+
await util.promisify(packDatas)();
534534
}
535535
else {
536536
res.writeHead(400);

0 commit comments

Comments
 (0)