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