v0.0.10
+ Добавлена авторизация как отдельная страница + Небольшие исправления в JS при ответе от сервера
This commit is contained in:
parent
639118f781
commit
e74c0a1af0
11 changed files with 283 additions and 40 deletions
|
@ -15,13 +15,16 @@ import std.array;
|
|||
import verinfo;
|
||||
import pgdb;
|
||||
import structures;
|
||||
import response;
|
||||
|
||||
import requests.numbers;
|
||||
import requests.sms;
|
||||
import requests.ussd;
|
||||
import requests.server;
|
||||
import requests.authorization;
|
||||
|
||||
static ServerInfo serverInfo;
|
||||
static AuthData serverAuthData;
|
||||
|
||||
private void showVersion() {
|
||||
writefln("daster версия %s, собрано %s", getDasterVersion(), __DATE__);
|
||||
|
@ -32,8 +35,9 @@ void page404(HTTPServerRequest req, HTTPServerResponse res, HTTPServerErrorInfo
|
|||
}
|
||||
|
||||
int main(string[] args) {
|
||||
log.level(log.INFORMATION);
|
||||
log.output(log.SYSLOG);
|
||||
log.level(log.INFORMATION)
|
||||
.output(log.SYSLOG)
|
||||
.color(true);
|
||||
|
||||
bool flagVersion;
|
||||
string flagSettings;
|
||||
|
@ -88,6 +92,7 @@ int main(string[] args) {
|
|||
if (webHost.logfile.length) log.file(webHost.logfile);
|
||||
|
||||
rcAsteriskDB();
|
||||
rcAuth();
|
||||
|
||||
auto router = new URLRouter;
|
||||
router.post("/", &postReq);
|
||||
|
@ -144,16 +149,15 @@ void startWebServer(WebHost wh, HTTPServerSettings http, HTTPServerSettings http
|
|||
}
|
||||
|
||||
void getReq(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
// if (req.session) {
|
||||
// auto user = req.session.get!UserData("userData");
|
||||
// if (user.loggedIn) {
|
||||
// renderMainPage(req, res);
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
if (req.session) {
|
||||
auto user = req.session.get!UserData("user");
|
||||
if (user.login) {
|
||||
renderMainPage(req, res);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// render!("index.dt", serverInfo)(res);
|
||||
renderMainPage(req, res);
|
||||
render!("authorization.dt", serverInfo)(res);
|
||||
}
|
||||
|
||||
void renderMainPage(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
|
@ -168,23 +172,23 @@ void postReq(HTTPServerRequest req, HTTPServerResponse res) {
|
|||
|
||||
if (query.empty) return;
|
||||
|
||||
// if (query != "authorization" && !checkAuth(req)) {
|
||||
// res.send(
|
||||
// true,
|
||||
// "Сессия не существует. Перезагрузите страницу"
|
||||
// );
|
||||
// return;
|
||||
// }
|
||||
if (query != "login" && !checkAuth(req)) {
|
||||
res.send(
|
||||
true,
|
||||
"Сессия не существует. Перезагрузите страницу"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
log.d("json request: " ~ jsr.to!string);
|
||||
|
||||
switch (query) {
|
||||
// case "authorization":
|
||||
// authorization(req, res);
|
||||
// break;
|
||||
// case "logout":
|
||||
// logout(req, res);
|
||||
// break;
|
||||
case "login":
|
||||
login(req, res, serverAuthData);
|
||||
break;
|
||||
case "logout":
|
||||
logout(req, res);
|
||||
break;
|
||||
case "listnumbergroups":
|
||||
getListNumberGroups(req, res);
|
||||
break;
|
||||
|
@ -441,3 +445,24 @@ WebHost rcWebHost() {
|
|||
|
||||
return wh;
|
||||
}
|
||||
|
||||
void rcAuth() {
|
||||
ConfigSection auth;
|
||||
|
||||
try {
|
||||
auth = rc[]["auth"];
|
||||
} catch (Exception e) {
|
||||
log.c("В конфигурационном файле не верны настройки auth");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (auth["login"].empty)
|
||||
log.w("Логин не был установлен - auth.login");
|
||||
else
|
||||
serverAuthData.login = auth["login"];
|
||||
|
||||
if (auth["password"].empty)
|
||||
log.w("Пароль не был установлен - auth.password");
|
||||
else
|
||||
serverAuthData.password = auth["password"];
|
||||
}
|
||||
|
|
47
source/requests/authorization.d
Normal file
47
source/requests/authorization.d
Normal file
|
@ -0,0 +1,47 @@
|
|||
module requests.authorization;
|
||||
|
||||
import vibe.vibe;
|
||||
import response;
|
||||
import structures;
|
||||
import singlog;
|
||||
|
||||
void login(HTTPServerRequest req, HTTPServerResponse res, AuthData serverAuthData) {
|
||||
auto userAuthData = deserializeJson!AuthData(req.json);
|
||||
|
||||
if (!(serverAuthData.login == userAuthData.login &&
|
||||
serverAuthData.password == userAuthData.password)) {
|
||||
log.i(("Данные авторизации не верны: %s").format(req.json));
|
||||
res.send(
|
||||
true,
|
||||
"Данные авторизации не верны"
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
auto user = UserData(true);
|
||||
|
||||
req.session = res.startSession();
|
||||
req.session.set!UserData("user", user);
|
||||
|
||||
log.i("Авторизация успешно пройдена");
|
||||
|
||||
res.send();
|
||||
}
|
||||
|
||||
void logout(HTTPServerRequest req, HTTPServerResponse res) {
|
||||
req.session.set!UserData("user", UserData.init);
|
||||
res.terminateSession();
|
||||
|
||||
log.i("Выход из системы");
|
||||
|
||||
res.send();
|
||||
}
|
||||
|
||||
bool checkAuth(HTTPServerRequest req) {
|
||||
if (req.session)
|
||||
return req.session.get!UserData("user").login;
|
||||
|
||||
log.d("Отсутствует авторизация");
|
||||
|
||||
return false;
|
||||
}
|
|
@ -4,6 +4,15 @@ struct ServerInfo {
|
|||
string name;
|
||||
}
|
||||
|
||||
struct AuthData {
|
||||
string login;
|
||||
string password;
|
||||
}
|
||||
|
||||
struct UserData {
|
||||
bool login = false;
|
||||
}
|
||||
|
||||
struct WebHost {
|
||||
string[] addresses;
|
||||
ushort http = 0;
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
module version_;
|
||||
|
||||
enum dasterVersion = "v0.0.9";
|
||||
enum dasterVersion = "v0.0.10";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue