]> gitweb.factorcode.org Git - factor.git/commitdiff
Improving user-admin tool
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 18 Jun 2008 08:26:50 +0000 (03:26 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 18 Jun 2008 08:26:50 +0000 (03:26 -0500)
extra/furnace/auth/features/deactivate-user/deactivate-user.factor [new file with mode: 0644]
extra/furnace/auth/features/edit-profile/edit-profile.xml
extra/furnace/auth/features/registration/registration.factor
extra/html/templates/chloe/chloe.factor
extra/webapps/user-admin/user-admin.factor
extra/websites/concatenative/concatenative.factor

diff --git a/extra/furnace/auth/features/deactivate-user/deactivate-user.factor b/extra/furnace/auth/features/deactivate-user/deactivate-user.factor
new file mode 100644 (file)
index 0000000..49fa003
--- /dev/null
@@ -0,0 +1,22 @@
+! Copyright (C) 2008 Slava Pestov.
+! See http://factorcode.org/license.txt for BSD license.
+USING: kernel assocs namespaces accessors db db.tuples urls
+http.server.dispatchers
+furnace.asides furnace.actions furnace.auth furnace.auth.providers ;
+IN: furnace.auth.features.deactivate-user
+
+: <deactivate-user-action> ( -- action )
+    <action>
+        [
+            logged-in-user get
+                1 >>deleted
+                t >>changed?
+            drop
+            URL" $realm" end-aside
+        ] >>submit ;
+    
+: allow-deactivation ( realm -- realm )
+    <deactivate-user-action> "deactivate-user" add-responder ;
+
+: allow-deactivation? ( -- ? )
+    realm get responders>> "deactivate-user" swap key? ;
index 011cc2bdf8a6e79067a11ac018af327fc78fe79b..a9d7994e970128165acad686218a1d00ffd0812e 100644 (file)
@@ -67,4 +67,7 @@
 
        </t:form>
        
+       <t:if t:code="furnace.auth.features.deactivate-user:allow-deactivation?">
+               <t:button t:action="$realm/deactivate-user">Delete User</t:button>
+       </t:if>
 </t:chloe>
index 5c1851fb64f8458bcdd493918b9b4f54ab9ddab7..20a48d07d29b43cf6297a95f1ccd86f0ee05892f 100644 (file)
@@ -35,10 +35,11 @@ IN: furnace.auth.features.registration
             realm get init-user-profile
 
             URL" $realm" <redirect>
-        ] >>submit ;
+        ] >>submit
+    <auth-boilerplate> ;
 
 : allow-registration ( login -- login )
-    <register-action> <auth-boilerplate> "register" add-responder ;
+    <register-action> "register" add-responder ;
 
 : allow-registration? ( -- ? )
     realm get responders>> "register" swap key? ;
index 32fe954178dce05c94159f2e1c3e0dcb61a7b395..103020ee0ff1e33dbe9729356b8a8ec7bf4c1f91 100644 (file)
@@ -87,11 +87,10 @@ CHLOE: comment drop ;
 CHLOE: call-next-template drop call-next-template ;
 
 : attr>word ( value -- word/f )
-    dup ":" split1 swap lookup
-    [ ] [ "No such word: " swap append throw ] ?if ;
+    ":" split1 swap lookup ;
 
 : if-satisfied? ( tag -- ? )
-    [ "code" optional-attr [ attr>word execute ] [ t ] if* ]
+    [ "code" optional-attr [ attr>word dup [ execute ] when ] [ t ] if* ]
     [ "value" optional-attr [ value ] [ t ] if* ]
     bi and ;
 
index f445b6f471acd97b6f791a30877c7cab4f3c516d..2137abbc2ddf3156de1f6bc9c749824381518fe1 100644 (file)
@@ -139,7 +139,7 @@ TUPLE: user-admin < dispatcher ;
     <action>
         [
             validate-username
-            "username" value <user> select-tuple 1 >>deleted update-tuple
+            "username" value <user> delete-tuples
             URL" $user-admin" <redirect>
         ] >>submit ;
 
index 1e79b043e26b3d7b18f370c57d7cbab98102767a..a4f826d7f6c46fbca408f6954c3bf497f43dde45 100644 (file)
@@ -13,6 +13,7 @@ furnace.auth.providers.db
 furnace.auth.features.edit-profile
 furnace.auth.features.recover-password
 furnace.auth.features.registration
+furnace.auth.features.deactivate-user
 furnace.boilerplate
 furnace.redirection
 webapps.blogs
@@ -57,6 +58,7 @@ TUPLE: factor-website < dispatcher ;
         allow-registration
         allow-password-recovery
         allow-edit-profile
+        allow-deactivation
     <boilerplate>
         { factor-website "page" } >>template
     test-db <alloy> ;