]> Git repositories of Nishi - repoview.git/commitdiff
adding login message
authorNishi <nishi@nishi.boats>
Wed, 21 Aug 2024 00:44:17 +0000 (00:44 +0000)
committerNishi <nishi@nishi.boats>
Wed, 21 Aug 2024 00:44:17 +0000 (00:44 +0000)
git-svn-id: file:///raid/svn-personal/repoview/trunk@6 7e8b2a19-8934-dd40-8cb3-db22cdd5a80f

CGI/auth/cookie.c
CGI/main.c
CGI/page.c
CGI/paper.png [new file with mode: 0644]
CGI/theme/modern.c
CGI/theme/optimized.c [deleted file]
config.h.tmpl
objs.c

index c8240a6644184f1e9a986be02f5ac784fa49fac1..45b9548bba601a967a34be7deca5c455104221cd 100644 (file)
@@ -73,7 +73,11 @@ char* rv_logged_in(void) {
        int i;
        for(i = 0; cookie_entries[i] != NULL; i++) {
                if(strcmp(cookie_entries[i]->key, "token") == 0) {
-                       return rv_who_has_token(cookie_entries[i]->value);
+                       char* who = rv_who_has_token(cookie_entries[i]->value);
+                       if(who == NULL) {
+                               printf("Set-Cookie: token=; HttpOnly; Expires=0; SameSite=Strict\r\n");
+                       }
+                       return who;
                        break;
                }
        }
@@ -82,7 +86,7 @@ char* rv_logged_in(void) {
 
 void rv_save_login(const char* username) {
        char* token = rv_new_token(username);
-       printf("Set-Cookie: token=%s; HttpOnly\r\n", token);
+       printf("Set-Cookie: token=%s; HttpOnly; SameSite=Strict\r\n", token);
        free(token);
 }
 
index 39da12f1b8280e7bd5993e56523c57e82820b162..8cf9f8ea0f35d6c86a58f6e7ab6b5bccae2b552d 100644 (file)
@@ -40,7 +40,6 @@ int main() {
        printf("Content-Type: text/html\r\n");
        printf("\r\n");
        rv_print_page();
-       rv_logged_in();
        rv_load_query('Q');
        rv_free_query();
        rv_load_query('P');
index c938e751f9d3fb763e716b2b7d093567ab48a438..5e1853230a169448a3fadcb3ae591d472e419265 100644 (file)
@@ -4,6 +4,7 @@
 
 #include "rv_query.h"
 #include "rv_util.h"
+#include "rv_auth.h"
 
 #include "../config.h"
 
@@ -11,6 +12,7 @@
 #include <stdlib.h>
 
 char* buffer;
+char* user;
 
 void render_page(void);
 
@@ -23,6 +25,7 @@ void add_data(char** data, const char* txt) {
 void rv_process_page(void) {
        buffer = malloc(1);
        buffer[0] = 0;
+       user = rv_logged_in();
        render_page();
 }
 
diff --git a/CGI/paper.png b/CGI/paper.png
new file mode 100644 (file)
index 0000000..06dbaa1
Binary files /dev/null and b/CGI/paper.png differ
index fc96c01400901b33143bd82ebda99de0f26afd39..0ed184a6200c66d0613f17c94f4a19b8d84efc81 100644 (file)
@@ -19,6 +19,7 @@ void render_stuff();
 char* title = NULL;
 char* desc = NULL;
 char* page = NULL;
+extern char* user;
 
 void render_page(void) {
        rv_load_query('Q');
@@ -63,6 +64,8 @@ void render_page(void) {
                } else {
                        if(rv_has_user(rv_get_query("username"))) {
                                if(rv_check_password(rv_get_query("username"), rv_get_query("password"))) {
+                                       if(user != NULL) free(user);
+                                       user = rv_strdup(rv_get_query("username"));
                                        add_data(&page, "Welcome back.\n");
                                        rv_save_login(rv_get_query("username"));
                                } else {
@@ -72,6 +75,14 @@ void render_page(void) {
                                add_data(&page, "User does not exist.");
                        }
                }
+       } else if(strcmp(query, "mypage") == 0) {
+               title = rv_strdup("My Page");
+               desc = rv_strdup("You manage your information here.");
+               if(user == NULL) {
+                       page = rv_strdup("It looks like you are not logged in.<br>Want to <a href=\"");
+                       add_data(&page, INSTANCE_ROOT);
+                       add_data(&page, "/?page=login\">log in</a>?\n");
+               }
        }
 
        if(title == NULL) title = rv_strdup("");
@@ -109,7 +120,6 @@ char* escape(const char* str) {
 }
 
 void render_stuff(void) {
-       char* user = rv_logged_in();
        char* escaped;
        add_data(&buffer, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n");
        add_data(&buffer, "<html>\n");
@@ -147,6 +157,9 @@ void render_stuff(void) {
        add_data(&buffer, "}\n");
        add_data(&buffer, "#nav {\n");
        add_data(&buffer, "     background-color: white;\n");
+       add_data(&buffer, "     background-image: url('");
+       add_data(&buffer, INSTANCE_NAVBAR);
+       add_data(&buffer, "');\n");
        add_data(&buffer, "     height: 44px;\n");
        add_data(&buffer, "     padding: 8px;\n");
        add_data(&buffer, "     padding-left: 32px;\n");
@@ -232,6 +245,13 @@ void render_stuff(void) {
                add_data(&buffer, "/?page=login\">Login</a>\n");
                add_data(&buffer, "                     </div>\n");
        }
+       if(user != NULL) {
+               add_data(&buffer, "<div style=\"float: right;font-size: 10px;padding-top: 36px;padding-right: 0;font-style: italic;\">You have logged in as <a href=\"");
+               add_data(&buffer, INSTANCE_ROOT);
+               add_data(&buffer, "/?page=mypage\">");
+               add_data(&buffer, user);
+               add_data(&buffer, "</a></div>");
+       }
        add_data(&buffer, "             </div>\n");
        add_data(&buffer, "             <div id=\"desc\">\n");
        add_data(&buffer, "                     <div id=\"descinside\">\n");
diff --git a/CGI/theme/optimized.c b/CGI/theme/optimized.c
deleted file mode 100644 (file)
index 51622dc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/* $Id$ */
-
-extern char* buffer;
-void add_data(char** data, const char* txt);
-
-void render_page(void) {}
index 7e1cf054d96955fafd936756484782fca6ced159..2b89ecd00c4f51ee7889a06e42b46fd6ab779a37 100644 (file)
 /* Instance Logo. */
 #define INSTANCE_LOGO  "/logo.png"
 
+/* Image to be put in the navbar, for the modern theme. 940x60 should be good. */
+#define INSTANCE_NAVBAR        "/paper.png"
+
+/* Navbar repeat, for the modern theme. */
+#define INSTANCE_REPEAT        "resize-x"
+
 /* Theme. */
-#undef USE_OPTIMIZED
 #define USE_MODERN
 
 /* Database type. */
diff --git a/objs.c b/objs.c
index afeb2f301bcf71b370cd43d6095c5afa009eff35..ec4aee4f4a4ef6acd0bc9c6990e91e5537dbc971 100644 (file)
--- a/objs.c
+++ b/objs.c
@@ -11,8 +11,6 @@ int main() {
        printf(" ");
 #if defined(USE_MODERN)
        printf("theme/modern.o");
-#elif defined(USE_OPTIMIZED)
-       printf("theme/optimized.o");
 #endif
        printf(" ");
 #if defined(USE_COOKIE)