1 ! Copyright (C) 2008 Slava Pestov.
\r
2 ! See http://factorcode.org/license.txt for BSD license.
\r
3 USING: kernel accessors random math.parser locals
\r
5 IN: furnace.auth.providers
\r
10 email ticket capabilities profile deleted changed? ;
\r
12 : <user> ( username -- user )
\r
17 GENERIC: get-user ( username provider -- user/f )
\r
19 GENERIC: update-user ( user provider -- )
\r
21 GENERIC: new-user ( user provider -- user/f )
\r
23 ! Password recovery support
\r
25 :: issue-ticket ( email username provider -- user/f )
\r
26 username provider get-user :> user
\r
28 user email>> length 0 > [
\r
29 user email>> email = [
\r
31 256 random-bits >hex >>ticket
\r
32 dup provider update-user
\r
37 :: claim-ticket ( ticket username provider -- user/f )
\r
38 username provider get-user :> user
\r
40 user ticket>> ticket = [
\r
41 user f >>ticket dup provider update-user
\r
47 : add-user ( provider user -- provider )
\r
48 over new-user [ "User exists" throw ] when ;
\r