mirror of
https://github.com/Mercantec-GHC/h4-projekt-gruppe-0-sm.git
synced 2025-04-28 08:44:06 +02:00
user session works
This commit is contained in:
parent
be00f1c965
commit
1b8ffa54a0
@ -1,22 +1,22 @@
|
|||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS users (
|
CREATE TABLE IF NOT EXISTS users (
|
||||||
id INT PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
email TEXT NOT NULL,
|
email TEXT NOT NULL,
|
||||||
password_hash TEXT NOT NULL,
|
password_hash TEXT NOT NULL,
|
||||||
balance_dkk_cent INT NOT NULL
|
balance_dkk_cent INTEGER NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS coords (
|
CREATE TABLE IF NOT EXISTS coords (
|
||||||
id INT PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
x INT NOT NULL,
|
x INTEGER NOT NULL,
|
||||||
y INT NOT NULL
|
y INTEGER NOT NULL
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS products (
|
CREATE TABLE IF NOT EXISTS products (
|
||||||
id INT PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
price_dkk_cent INT NOT NULL,
|
price_dkk_cent INTEGER NOT NULL,
|
||||||
description TEXT NOT NULL,
|
description TEXT NOT NULL,
|
||||||
coord INT,
|
coord INT,
|
||||||
barcode TEXT,
|
barcode TEXT,
|
||||||
@ -25,31 +25,36 @@ CREATE TABLE IF NOT EXISTS products (
|
|||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS product_prices (
|
CREATE TABLE IF NOT EXISTS product_prices (
|
||||||
id INT PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
product INT NOT NULL,
|
product INTEGER NOT NULL,
|
||||||
price_dkk_cent INT NOT NULL,
|
price_dkk_cent INTEGER NOT NULL,
|
||||||
|
|
||||||
FOREIGN KEY(product) REFERENCES products(id)
|
FOREIGN KEY(product) REFERENCES products(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS carts (
|
CREATE TABLE IF NOT EXISTS carts (
|
||||||
id INT PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
user INT NOT NULL,
|
user INTEGER NOT NULL,
|
||||||
|
|
||||||
FOREIGN KEY(user) REFERENCES users(id)
|
FOREIGN KEY(user) REFERENCES users(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS cart_items (
|
CREATE TABLE IF NOT EXISTS cart_items (
|
||||||
id INT PRIMARY KEY,
|
id INTEGER PRIMARY KEY,
|
||||||
cart INT NOT NULL,
|
cart INTEGER NOT NULL,
|
||||||
amount INT NOT NULL,
|
amount INTEGER NOT NULL,
|
||||||
|
|
||||||
FOREIGN KEY(cart) REFERENCES carts(id)
|
FOREIGN KEY(cart) REFERENCES carts(id)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INSERT OR REPLACE INTO users VALUES(1,'User','test@email.com','08ce0220f6d63d85c3ac313e308f4fca35ecfb850baa8ddb924cfab98137b6b18b4a8e027067cb98802757df1337246a0f3aa25c44c2b788517a871086419dcf',10000);
|
INSERT OR REPLACE INTO users (name, email, password_hash, balance_dkk_cent)
|
||||||
|
VALUES ('User','test@email.com','08ce0220f6d63d85c3ac313e308f4fca35ecfb850baa8ddb924cfab98137b6b18b4a8e027067cb98802757df1337246a0f3aa25c44c2b788517a871086419dcf',10000);
|
||||||
|
|
||||||
|
INSERT OR REPLACE INTO products (name, price_dkk_cent, description, coord, barcode)
|
||||||
|
VALUES ('Letmælk',1195,'Mælk fra ko',NULL,NULL);
|
||||||
|
|
||||||
|
INSERT OR REPLACE INTO products (name, price_dkk_cent, description, coord, barcode)
|
||||||
|
VALUES ('Smør',2000,'Smør fra mejeri',NULL,NULL);
|
||||||
|
|
||||||
INSERT OR REPLACE INTO products VALUES(1,'Letmælk',1195,'Mælk fra ko',NULL,NULL);
|
|
||||||
INSERT OR REPLACE INTO products VALUES(2,'Smør',2000,'Smør fra mejeri',NULL,NULL);
|
|
||||||
|
@ -100,7 +100,7 @@ const Session* middleware_session(HttpCtx* ctx)
|
|||||||
{
|
{
|
||||||
const Session* session = header_session(ctx);
|
const Session* session = header_session(ctx);
|
||||||
if (!session) {
|
if (!session) {
|
||||||
RESPOND_JSON(ctx, 200, "{\"ok\":false,\"msg\":\"unauthorized\"}");
|
RESPOND_JSON(ctx, 400, "{\"ok\":false,\"msg\":\"unauthorized\"}");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return session;
|
return session;
|
||||||
|
@ -185,7 +185,8 @@ DbRes db_user_from_email(Db* db, User* user, const char* email)
|
|||||||
" FROM users WHERE email = ?",
|
" FROM users WHERE email = ?",
|
||||||
-1, &stmt, NULL);
|
-1, &stmt, NULL);
|
||||||
if (prepare_res != SQLITE_OK) {
|
if (prepare_res != SQLITE_OK) {
|
||||||
fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection), __func__, __LINE__);
|
fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection),
|
||||||
|
__func__, __LINE__);
|
||||||
res = DbRes_Error;
|
res = DbRes_Error;
|
||||||
goto l0_return;
|
goto l0_return;
|
||||||
}
|
}
|
||||||
@ -197,7 +198,8 @@ DbRes db_user_from_email(Db* db, User* user, const char* email)
|
|||||||
goto l0_return;
|
goto l0_return;
|
||||||
} else if (step_res != SQLITE_ROW) {
|
} else if (step_res != SQLITE_ROW) {
|
||||||
printf("step_res = %d, email = '%s'\n", step_res, email);
|
printf("step_res = %d, email = '%s'\n", step_res, email);
|
||||||
fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection), __func__, __LINE__);
|
fprintf(stderr, "error: %s\n at %s:%d\n", sqlite3_errmsg(connection),
|
||||||
|
__func__, __LINE__);
|
||||||
res = DbRes_Error;
|
res = DbRes_Error;
|
||||||
goto l0_return;
|
goto l0_return;
|
||||||
}
|
}
|
||||||
@ -217,7 +219,6 @@ l0_return:
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DbRes db_product_all(Db* db, ProductVec* vec)
|
DbRes db_product_all(Db* db, ProductVec* vec)
|
||||||
{
|
{
|
||||||
sqlite3* connection;
|
sqlite3* connection;
|
||||||
|
@ -89,8 +89,6 @@ int http_server_listen(HttpServer* server)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("accepted\n");
|
|
||||||
|
|
||||||
Client req = { .file = res, client_addr };
|
Client req = { .file = res, client_addr };
|
||||||
pthread_mutex_lock(&ctx->mutex);
|
pthread_mutex_lock(&ctx->mutex);
|
||||||
|
|
||||||
|
@ -29,11 +29,21 @@ Deno.test("test", async () => {
|
|||||||
assertMatch(loginRes.token, /^[0-9a-zA-Z]+$/);
|
assertMatch(loginRes.token, /^[0-9a-zA-Z]+$/);
|
||||||
const token = loginRes.token;
|
const token = loginRes.token;
|
||||||
|
|
||||||
const sessionUserRes = await axios.post(
|
const sessionUserRes = await axios.get(
|
||||||
`${url}/api/sessions/login`,
|
`${url}/api/sessions/user`,
|
||||||
{ email, password },
|
{ headers: { "Session-Token": token } },
|
||||||
{ responseType: "json" },
|
)
|
||||||
).then((res) => res.data);
|
.then((res) => res.data)
|
||||||
|
.catch((error) => error.response.data);
|
||||||
|
|
||||||
assertEquals(sessionUserRes.ok, true);
|
assertEquals(sessionUserRes.ok, true);
|
||||||
|
console.log(sessionUserRes.user);
|
||||||
|
|
||||||
|
const logoutRes = await axios.post(
|
||||||
|
`${url}/api/sessions/logout`,
|
||||||
|
{},
|
||||||
|
{ responseType: "json", headers: { "Session-Token": token } },
|
||||||
|
).then((res) => res.data);
|
||||||
|
|
||||||
|
assertEquals(logoutRes, { ok: true });
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user