some cleanups and cosmetic for the account system
authorChristian Thaeter <ct@pipapo.org>
Wed, 30 Jan 2008 05:19:33 +0000 (06:19 +0100)
committerChristian Thaeter <ct@pipapo.org>
Wed, 30 Jan 2008 05:19:33 +0000 (06:19 +0100)
src/account.c
src/account.h
src/actions.c

index 560c11b..d1cc8e0 100644 (file)
@@ -29,7 +29,7 @@
 #include "git/cache.h"
 
 Html
-webgit_account_create_link (struct webgit_query* query, Html text)
+webgit_account_link (struct webgit_query* query, Html text)
 {
   return html (
                html_tag ("a",
@@ -52,18 +52,6 @@ webgit_account_logout_link (struct webgit_query* query, Html text)
 }
 
 
-Html
-webgit_account_prefs_link (struct webgit_query* query, Html text)
-{
-  return html (
-               html_tag ("a",
-                         html_attr ("href", html_fmt ("%s?action=prefs", query->request->script_name))
-                         ),
-                   text
-               );
-}
-
-
 size_t
 webgit_account_user_validate (const char* user)
 {
@@ -81,7 +69,7 @@ webgit_account_user_validate (const char* user)
       ++user;
     }
 
-  if (len < 2 || len > 32)
+  if (len < 2 || len > 31)
     return 0;
 
   return len;
@@ -108,7 +96,7 @@ webgit_account_name_validate (const char* name)
       ++name;
     }
 
-  if (len < 4 || len > 128)
+  if (len < 4 || len > 255)
     return 0;
 
   return len;
@@ -135,7 +123,7 @@ webgit_account_email_validate (const char* email)
       ++email;
     }
 
-  if (len < 6 || len > 128)
+  if (len < 6 || len > 255)
     return 0;
 
   return len;
@@ -203,7 +191,7 @@ webgit_account_sendmail (struct webgit_query* query)
 int
 webgit_account_create_pending (struct webgit_query* query)
 {
-  char * path = cwa_buffer_provide (strlen (query->accountdir) + sizeof ("/") + strlen (query->user));
+  char * path = cwa_buffer_provide (strlen (query->accountdir) + sizeof ("/x/") + strlen (query->user));
   char * path_pend = cwa_buffer_provide (strlen (query->accountdir) + sizeof ("/pending/") + strlen (query->user));
 
   /* make directories when not already existing, errors are ignored */
@@ -240,6 +228,33 @@ webgit_account_create_pending (struct webgit_query* query)
 }
 
 
+int
+webgit_account_recover (struct webgit_query* query)
+{
+  char * path = cwa_buffer_provide (strlen (query->accountdir) + sizeof ("/x/") + strlen (query->user));
+  sprintf (path, "%s/%c/%s", query->accountdir, *query->user, query->user);
+
+  FILE* f = fopen (path, "r");
+  if (!f)
+    die ("account does not exist");
+
+
+  char* name = cwa_buffer_provide (256);
+  char* email = cwa_buffer_provide (256);
+
+  int n = fscanf (f, "user=%*31[^;]; name=\"%255[^\"]\"; email=%255[^;];\n", name, email);
+  fclose (f);
+
+  if (n != 2)
+      die ("parse error");
+
+  query->name = cwa_strndup (name, 255);
+  query->email = cwa_strndup (email, 255);
+
+  return webgit_account_sendmail (query);
+}
+
+
 
 
 Html
index 4b2eac9..7bc7375 100644 (file)
 
 
 Html
-webgit_account_create_link (struct webgit_query* query, Html text);
+webgit_account_link (struct webgit_query* query, Html text);
 
 Html
 webgit_account_logout_link (struct webgit_query* query, Html text);
 
-Html
-webgit_account_prefs_link (struct webgit_query* query, Html text);
-
 Html
 webgit_account_menu_action (struct webgit_query* query);
 
index 7b96545..19ada57 100644 (file)
@@ -68,11 +68,11 @@ webgit_main_menu_action (struct webgit_query* query)
                html_include (webgit_skinpath (query, "inc/site.inc")), "<br />",
                query->ssign
                ? html (
-                       webgit_account_prefs_link (query, html ("Preferences")), "<br />",
+                       webgit_account_link (query, html ("Preferences")), "<br />",
                        webgit_account_logout_link (query, html ("Logout")), "<br />"
                        )
                : html (
-                       webgit_account_create_link (query, html ("Create&nbsp;Account")), "<br />"
+                       webgit_account_link (query, html ("Account")), "<br />"
                        ),
                html (
                      html_tag ("a",