1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel math math.parser random sequences ;
4 IN: furnace.auth.providers
9 email ticket capabilities profile deleted changed? ;
11 : <user> ( username -- user )
16 GENERIC: get-user ( username provider -- user/f )
18 GENERIC: update-user ( user provider -- )
20 GENERIC: new-user ( user provider -- user/f )
22 ! Password recovery support
24 :: issue-ticket ( email username provider -- user/f )
25 username provider get-user :> user
27 user email>> length 0 > [
28 user email>> email = [
30 256 random-bits >hex >>ticket
31 dup provider update-user
36 :: claim-ticket ( ticket username provider -- user/f )
37 username provider get-user :> user
39 user ticket>> ticket = [
40 user f >>ticket dup provider update-user
46 : add-user ( provider user -- provider )
47 over new-user [ "User exists" throw ] when ;