/pliant/fullpliant/user.pli
 
 1  abstract 
 2    [Users database definition.] 
 3   
 4  submodule "/pliant/storage/database.pli" 
 5  module "/pliant/language/type/text/str8.pli" 
 6   
 7  public 
 8   
 9   
 10  type UserRight 
 11    field Char auth <- "0" # authentification level: 0 = none, 1 = clear password, 2 = chalenge password, 3 = strong crypto 
 12    field Str ip # ip domain 
 13    field Str server 
 14    field Str right 
 15   
 16  type User 
 17    field Str first_name name abstract 
 18    field Str email homepage contact 
 19    field Str password_md5 
 20    field Str public_key 
 21    field Str language 
 22    field Str options 
 23    field Str style_options 
 24    field Set:UserRight right 
 25    field Set:Str template 
 26    field Set:Str mailbox 
 27    field Int uid <- undefined ; field Str computer 
 28   
 29  type UserDatabase 
 30    field Set:User user 
 31   
 32   
 33  type UserSessionKey 
 34    field Str8 key 
 35    field DateTime timestamp 
 36   
 37  type UserSecret 
 38    field Str password_md5 
 39    field Set:Str password_list 
 40    field Str shaker 
 41    field Str8 private_key 
 42    field Str key_md5 
 43    field Set:UserSessionKey session 
 44    field Set:UserSessionKey host_session 
 45   
 46  type UserSecretDatabase 
 47    field Set:UserSecret user 
 48    field Str password 
 49   
 50   
 51  type UserBookmark 
 52    field Str first_name name abstract 
 53    field Str mailbox url contact 
 54    field Str keywords 
 55   
 56  type User2 
 57    field Set:UserBookmark bookmark 
 58    field (Set Set:Anything) session 
 59    field DateTime from to <- undefined ; field Str ip comment # used by login.pli 
 60   
 61  type UserDatabase2 
 62    field Set:User2 user 
 63   
 64   
 65  (gvar Database:UserDatabase user_database) load "security:/user.pdb" log "security:/user.log" mount "/pliant/user" 
 66  gvar (Data Set:User) user :> user_database:data:user 
 67  (gvar Database:UserSecretDatabase user_secret_database) load "security:/user_secret.pdb" 
 68  (gvar Database:UserDatabase2 user_database2) load "security:/user2.pdb" mount "/pliant2/user" 
 69   
 70   
 71  function migrate 
 72    each user 
 73      if u:password_md5<>"" 
 74        if not exists:(user_secret_database:data:user keyof:u) 
 75          user_secret_database:data:user create keyof:u 
 76        user_secret_database:data:user:(keyof u) password_md5 := password_md5 
 77        password_md5 := "" 
 78  migrate