g2.2
This commit is contained in:
1 parent
7e22029791
commit
ff68e8d9b9
3 files changed
+122
-38
No files matched your search
@@ -2,3 +2,5 @@ const couchdb_username = "admin";
|
||||
const couchdb_password = "admin";
|
||||
|
||||
const couchdb_name = "sassy";
|
||||
|
||||
//http://127.0.0.1:5984/_utils/#_config/couchdb@127.0.0.1
|
||||
+64
-38
@@ -18,8 +18,12 @@ function _onOverlayDestroy(elm) {
|
||||
const ori_elm = getId(elm.getAttribute("name"));
|
||||
if (ori_elm) {
|
||||
const cb = ori_elm.getAttribute("onclose");
|
||||
if (typeof(cb) == "string") {
|
||||
try { eval(cb); } catch(err) { console.error(err); }
|
||||
if (typeof cb == "string") {
|
||||
try {
|
||||
eval(cb);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
elm.remove();
|
||||
@@ -29,7 +33,6 @@ function hideOverlay(id) {
|
||||
for (var i of elms) _onOverlayDestroy(i);
|
||||
}
|
||||
|
||||
|
||||
function _main_events() {
|
||||
const header_bar_1 = document.querySelector(".header_bar_1");
|
||||
if (header_bar_1 != null) {
|
||||
@@ -41,7 +44,7 @@ function _main_events() {
|
||||
isFloating = true;
|
||||
}
|
||||
});
|
||||
window.addEventListener("scroll", function() {
|
||||
window.addEventListener("scroll", function () {
|
||||
if (window.pageYOffset > 0 && !isFloating) {
|
||||
header_bar_1.style.animationDuration = "0.5s";
|
||||
header_bar_1.classList.remove("header_bar_1_docked");
|
||||
@@ -58,8 +61,6 @@ function _main_events() {
|
||||
}
|
||||
_main_events();
|
||||
|
||||
|
||||
|
||||
/* ----------- couch db ----------- */
|
||||
|
||||
//http://127.0.0.1:5984/_utils/#_config/couchdb@127.0.0.1
|
||||
@@ -77,16 +78,19 @@ class CouchDB {
|
||||
|
||||
_does_auth_exists() {
|
||||
return (
|
||||
typeof(couchdb_username) == "string" &&
|
||||
typeof(couchdb_password) == "string" &&
|
||||
typeof(couchdb_name) == "string"
|
||||
typeof couchdb_username == "string" &&
|
||||
typeof couchdb_password == "string" &&
|
||||
typeof couchdb_name == "string"
|
||||
);
|
||||
}
|
||||
_does_auth_exists_err() {
|
||||
if (!this._does_auth_exists()) throw 'Keine Auth vorhanden. Digga, mach mal <script src="./auth.js"></script>';
|
||||
if (!this._does_auth_exists())
|
||||
throw 'Keine Auth vorhanden. Digga, mach mal <script src="./auth.js"></script>';
|
||||
}
|
||||
_is_error_missing_database(errReason) {
|
||||
return errReason === "no_db_file" || errReason === "Database does not exist.";
|
||||
return (
|
||||
errReason === "no_db_file" || errReason === "Database does not exist."
|
||||
);
|
||||
}
|
||||
_is_error_missing_data(errReason) {
|
||||
return errReason === "missing";
|
||||
@@ -94,11 +98,11 @@ class CouchDB {
|
||||
async _ping() {
|
||||
try {
|
||||
const response = await fetch(CouchDB._default_url, {
|
||||
method: "GET"
|
||||
method: "GET",
|
||||
});
|
||||
|
||||
return response.ok;
|
||||
} catch(err) {
|
||||
} catch (err) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -129,34 +133,46 @@ class CouchDB {
|
||||
var json = JSON.parse(request.responseText);
|
||||
if (this._is_error_missing_data(json.reason)) {
|
||||
resolve(null);
|
||||
} else if (errorHandling && this._is_error_missing_database(json.reason)) {
|
||||
this.createDB().then((value) => {
|
||||
this._send_db_request(method, url, body, false).then((value) => {
|
||||
resolve(value);
|
||||
}).catch((err) => {
|
||||
} else if (
|
||||
errorHandling &&
|
||||
this._is_error_missing_database(json.reason)
|
||||
) {
|
||||
this.createDB()
|
||||
.then((value) => {
|
||||
this._send_db_request(method, url, body, false)
|
||||
.then((value) => {
|
||||
resolve(value);
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
reject(err);
|
||||
});
|
||||
}).catch((err) => {
|
||||
reject(err);
|
||||
});
|
||||
} else {
|
||||
reject(`Database not found: ${request.status} (Reason: ${reason.json})`);
|
||||
reject(
|
||||
`Database not found: ${request.status} (Reason: ${reason.json})`,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
reject(`Unexpected status: ${request.status} (Response: ${
|
||||
request.responseText
|
||||
})`);
|
||||
reject(
|
||||
`Unexpected status: ${request.status} (Response: ${
|
||||
request.responseText
|
||||
})`,
|
||||
);
|
||||
}
|
||||
} catch(err) {
|
||||
} catch (err) {
|
||||
reject("Unexpected error: " + err);
|
||||
}
|
||||
};
|
||||
|
||||
this.request.open(method, dburl, true);
|
||||
|
||||
this.request.setRequestHeader("Authorization", "Basic " + btoa(
|
||||
couchdb_username + ":" + couchdb_password
|
||||
));
|
||||
this.request.setRequestHeader(
|
||||
"Authorization",
|
||||
"Basic " + btoa(couchdb_username + ":" + couchdb_password),
|
||||
);
|
||||
this.request.setRequestHeader("Content-type", "application/json");
|
||||
|
||||
this.request.send(body);
|
||||
@@ -184,13 +200,19 @@ class CouchDB {
|
||||
}
|
||||
async get(id) {
|
||||
const res = await this._get_db_data(id);
|
||||
if (res == null) return null;
|
||||
delete res["_id"];
|
||||
delete res["_rev"];
|
||||
return res;
|
||||
}
|
||||
async set(id, content, replace = true) {
|
||||
try {
|
||||
if (typeof (content) != "object") throw "basic.js - CouchDB->set: content is not from type object (type = " + typeof(content) + ")";
|
||||
if (typeof content != "object")
|
||||
throw (
|
||||
"basic.js - CouchDB->set: content is not from type object (type = " +
|
||||
typeof content +
|
||||
")"
|
||||
);
|
||||
|
||||
let existingDoc;
|
||||
try {
|
||||
@@ -204,26 +226,30 @@ class CouchDB {
|
||||
content = {
|
||||
...content,
|
||||
_id: existingDoc._id,
|
||||
_rev: existingDoc._rev
|
||||
_rev: existingDoc._rev,
|
||||
};
|
||||
} else {
|
||||
content = {
|
||||
...existingDoc,
|
||||
...content,
|
||||
_rev: existingDoc._rev
|
||||
_rev: existingDoc._rev,
|
||||
};
|
||||
}
|
||||
}
|
||||
const res = await this._send_db_request("PUT", id, JSON.stringify(content));
|
||||
const res = await this._send_db_request(
|
||||
"PUT",
|
||||
id,
|
||||
JSON.stringify(content),
|
||||
);
|
||||
return {
|
||||
"type": "success",
|
||||
"message": res
|
||||
type: "success",
|
||||
message: res,
|
||||
};
|
||||
} catch(err) {
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
return {
|
||||
"type": "error",
|
||||
"message": err
|
||||
type: "error",
|
||||
message: err,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Login</title>
|
||||
<link rel="stylesheet" href="./lib/basic.css">
|
||||
<script src="./auth.js"></script>
|
||||
<script src="./lib/basic.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<input id="username"><br>
|
||||
<input type="password" id="password">
|
||||
|
||||
<button onclick="login()">Submit</button>
|
||||
|
||||
<script>
|
||||
|
||||
const couchDB = new CouchDB();
|
||||
|
||||
async function getData() {
|
||||
let res = await couchDB.get("users");
|
||||
if (!res) res = {};
|
||||
return res;
|
||||
}
|
||||
|
||||
async function login() {
|
||||
const data = await getData();
|
||||
const username = getId("username").value;
|
||||
const password = getId("password").value;
|
||||
|
||||
const user = data[username];
|
||||
//{"turtle":{"password": "password","level":1}}
|
||||
if (user == undefined) {
|
||||
alert("Falscher Nutzername!");
|
||||
return;
|
||||
}
|
||||
if (user.password != password) {
|
||||
alert("Falsches Passwort!");
|
||||
return;
|
||||
}
|
||||
|
||||
location.href = "/uebersicht.html";
|
||||
}
|
||||
|
||||
couchDB.set("users", {
|
||||
turtle: {
|
||||
password: "password",
|
||||
level: 1,
|
||||
isProf: true
|
||||
}
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user