summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSebastian Reichel <sre@ring0.de>2016-09-17 00:45:30 +0200
committerSebastian Reichel <sre@ring0.de>2016-09-17 01:01:01 +0200
commit0f5601988c5898658c6d585349249107370e0d40 (patch)
tree16d5ee6e55cf5e21548590218d39785f51afb78e /src
parent347f5dc2f3c127478ac1a12709dd4e6cae76da07 (diff)
downloadserial-barcode-scanner-0f5601988c5898658c6d585349249107370e0d40.tar.bz2
move disabled flag from auth table to user table
Diffstat (limited to 'src')
-rw-r--r--src/database/database.vala24
-rw-r--r--src/database/db-interface.vala5
-rw-r--r--src/scanner-session/scannersession.vala2
-rw-r--r--src/web/csv.vala4
-rw-r--r--src/web/web.vala3
-rw-r--r--src/web/websession.vala2
6 files changed, 24 insertions, 16 deletions
diff --git a/src/database/database.vala b/src/database/database.vala
index 9bfbd9d..74a554d 100644
--- a/src/database/database.vala
+++ b/src/database/database.vala
@@ -106,8 +106,8 @@ public class DataBase : Object {
queries["username"] = "SELECT firstname, lastname FROM users WHERE id = ?";
queries["password_get"] = "SELECT password FROM authentication WHERE user = ?";
queries["password_set"] = "UPDATE authentication SET password=? WHERE user = ?";
- queries["userinfo"] = "SELECT firstname, lastname, email, gender, street, plz, city, pgp FROM users WHERE id = ?";
- queries["userauth"] = "SELECT disabled, superuser, auth_users, auth_products, auth_cashbox FROM authentication WHERE user = ?";
+ queries["userinfo"] = "SELECT firstname, lastname, email, gender, street, plz, city, pgp, hidden, disabled FROM users WHERE id = ?";
+ queries["userauth"] = "SELECT superuser, auth_users, auth_products, auth_cashbox FROM authentication WHERE user = ?";
queries["userauth_set"] = "UPDATE authentication SET auth_users = ?, auth_products = ?, auth_cashbox = ? WHERE user = ?";
queries["profit_by_product"] = "SELECT name, SUM(memberprice - (SELECT price FROM purchaseprices WHERE product = purch.product)) AS price FROM sales purch, prices, products WHERE purch.product = products.id AND purch.product = prices.product AND purch.user > 0 AND purch.timestamp > ? AND purch.timestamp < ? AND prices.valid_from = (SELECT valid_from FROM prices WHERE product = purch.product AND valid_from < purch.timestamp ORDER BY valid_from DESC LIMIT 1) GROUP BY name ORDER BY price;";
queries["invoice"] = "SELECT timestamp, id AS productid, name AS productname, CASE WHEN user < 0 THEN (SELECT SUM(price * amount) / SUM(amount) FROM restock WHERE restock.product = id AND restock.timestamp <= sales.timestamp) else (SELECT CASE WHEN user=0 THEN guestprice else memberprice END FROM prices WHERE product = id AND valid_from <= timestamp ORDER BY valid_from DESC LIMIT 1) END AS price FROM sales INNER JOIN products ON sales.product = products.id WHERE user = ? AND timestamp >= ? AND timestamp <= ? ORDER BY timestamp";
@@ -119,9 +119,9 @@ public class DataBase : Object {
queries["total_sales"] = "SELECT SUM(price) FROM invoice WHERE user >= 0 AND timestamp >= ?";
queries["total_profit"] = "SELECT SUM(price - (SELECT price FROM purchaseprices WHERE product = productid)) FROM invoice WHERE user >= 0 AND timestamp >= ?";
queries["user_get_ids"] = "SELECT id FROM users WHERE id > 0";
- queries["user_replace"] = "INSERT OR REPLACE INTO users ('id', 'email', 'firstname', 'lastname', 'gender', 'street', 'plz', 'city', 'pgp') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
+ queries["user_replace"] = "INSERT OR REPLACE INTO users ('id', 'email', 'firstname', 'lastname', 'gender', 'street', 'plz', 'city', 'pgp', 'hidden', 'disabled') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
queries["user_auth_create"] = "INSERT OR IGNORE INTO authentication (user) VALUES (?)";
- queries["user_disable"] = "UPDATE authentication SET disabled = ? WHERE user = ?";
+ queries["user_disable"] = "UPDATE users SET disabled = ? WHERE id = ?";
queries["last_timestamp"] = "SELECT timestamp FROM sales ORDER BY timestamp DESC LIMIT 1";
queries["category_list"] = "SELECT id, name FROM categories";
queries["supplier_list"] = "SELECT id, name, postal_code, city, street, phone, website FROM supplier";
@@ -605,6 +605,8 @@ public class DataBase : Object {
result.postcode = statements["userinfo"].column_text(5);
result.city = statements["userinfo"].column_text(6);
result.pgp = statements["userinfo"].column_text(7);
+ result.hidden = statements["userinfo"].column_int(8) == 1;
+ result.disabled = statements["userinfo"].column_int(9) == 1;
} else if(rc == Sqlite.DONE) {
throw new DatabaseError.USER_NOT_FOUND("user not found");
} else {
@@ -617,7 +619,6 @@ public class DataBase : Object {
public UserAuth get_user_auth(int user) throws DatabaseError {
var result = UserAuth();
result.id = user;
- result.disabled = false;
result.superuser = false;
result.auth_cashbox = false;
result.auth_products = false;
@@ -628,11 +629,10 @@ public class DataBase : Object {
int rc = statements["userauth"].step();
if(rc == Sqlite.ROW) {
- result.disabled = statements["userauth"].column_int(0) == 1;
- result.superuser = statements["userauth"].column_int(1) == 1;
- result.auth_users = statements["userauth"].column_int(2) == 1;
- result.auth_products = statements["userauth"].column_int(3) == 1;
- result.auth_cashbox = statements["userauth"].column_int(4) == 1;
+ result.superuser = statements["userauth"].column_int(0) == 1;
+ result.auth_users = statements["userauth"].column_int(1) == 1;
+ result.auth_products = statements["userauth"].column_int(2) == 1;
+ result.auth_cashbox = statements["userauth"].column_int(3) == 1;
} else if(rc == Sqlite.DONE) {
/* entry not found, we return defaults */
} else {
@@ -841,6 +841,8 @@ public class DataBase : Object {
statements["user_replace"].bind_text(7, u.postcode);
statements["user_replace"].bind_text(8, u.city);
statements["user_replace"].bind_text(9, u.pgp);
+ statements["user_replace"].bind_int(10, u.hidden ? 1 : 0);
+ statements["user_replace"].bind_int(11, u.disabled ? 1 : 0);
int rc = statements["user_replace"].step();
if(rc != Sqlite.DONE)
@@ -848,7 +850,7 @@ public class DataBase : Object {
}
public bool user_is_disabled(int user) throws DatabaseError {
- return get_user_auth(user).disabled;
+ return get_user_info(user).disabled;
}
public bool user_exists(int user) throws DatabaseError {
diff --git a/src/database/db-interface.vala b/src/database/db-interface.vala
index 7d4a691..f5bfada 100644
--- a/src/database/db-interface.vala
+++ b/src/database/db-interface.vala
@@ -119,6 +119,8 @@ public struct UserInfo {
public string postcode;
public string city;
public string pgp;
+ public bool disabled;
+ public bool hidden;
public bool equals(UserInfo x) {
if(id != x.id) return false;
@@ -130,6 +132,8 @@ public struct UserInfo {
if(postcode != x.postcode) return false;
if(city != x.city) return false;
if(pgp != x.pgp) return false;
+ if(disabled != x.disabled) return false;
+ if(hidden != x.hidden) return false;
return true;
}
@@ -137,7 +141,6 @@ public struct UserInfo {
public struct UserAuth {
public int id;
- public bool disabled;
public bool superuser;
public bool auth_cashbox;
public bool auth_products;
diff --git a/src/scanner-session/scannersession.vala b/src/scanner-session/scannersession.vala
index f3357af..666f2ac 100644
--- a/src/scanner-session/scannersession.vala
+++ b/src/scanner-session/scannersession.vala
@@ -59,7 +59,7 @@ public class ScannerSessionImplementation {
this.user = user;
try {
this.name = db.get_username(user);
- this.disabled = db.get_user_auth(user).disabled;
+ this.disabled = db.user_is_disabled(user);
} catch(DatabaseError e) {
send_message(MessageType.ERROR, "Error (user=%d): %s", user, e.message);
return false;
diff --git a/src/web/csv.vala b/src/web/csv.vala
index 92e7017..ecfe2c2 100644
--- a/src/web/csv.vala
+++ b/src/web/csv.vala
@@ -52,7 +52,7 @@ public class CSVMemberFile {
public CSVMemberFile(string data) {
foreach(var line in data.split("\n")) {
var linedata = csv_split(line);
- if(linedata.length >= 9) {
+ if(linedata.length >= 11) {
var m = UserInfo();
m.id = int.parse(csv_value(linedata[0]));
m.email = csv_value(linedata[1]);
@@ -63,6 +63,8 @@ public class CSVMemberFile {
m.city = csv_value(linedata[6]);
m.gender = csv_value(linedata[7]) == "m" ? "masculinum" : csv_value(linedata[7]) == "w" ? "femininum" : "unknown";
m.pgp = csv_value(linedata[8]);
+ m.hidden = int.parse(csv_value(linedata[9])) != 0;
+ m.disabled = int.parse(csv_value(linedata[10])) != 0;
if(csv_value(linedata[0]) != "EXTERNEMITGLIEDSNUMMER")
members += m;
}
diff --git a/src/web/web.vala b/src/web/web.vala
index ee6e71a..1dedeff 100644
--- a/src/web/web.vala
+++ b/src/web/web.vala
@@ -333,9 +333,10 @@ public class WebServer {
t.replace("POSTALCODE", userinfo.postcode);
t.replace("CITY", userinfo.city);
t.replace("PGPKEYID", userinfo.pgp);
+ t.replace("DISABLED", userinfo.disabled ? "true" : "false");
+ t.replace("HIDDEN", userinfo.hidden ? "true" : "false");
var userauth = db.get_user_auth(id);
- t.replace("DISABLED", userauth.disabled ? "true" : "false");
t.replace("ISSUPERUSER", userauth.superuser ? "true" : "false");
t.replace("HAS_AUTH_PRODUCTS", userauth.auth_products ? "Yes" : "No");
t.replace("HAS_AUTH_CASHBOX", userauth.auth_cashbox ? "Yes" : "No");
diff --git a/src/web/websession.vala b/src/web/websession.vala
index 1b2e223..ae3cafc 100644
--- a/src/web/websession.vala
+++ b/src/web/websession.vala
@@ -84,7 +84,7 @@ public class WebSession {
private void setup_auth(int user) throws DatabaseError, IOError {
var auth = db.get_user_auth(user);
- this.disabled = auth.disabled;
+ this.disabled = db.user_is_disabled(user);
this.superuser = auth.superuser;
this.auth_cashbox = auth.auth_cashbox;
this.auth_products = auth.auth_products;