| 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 u 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 := u password_md5 | |
| 77 | u password_md5 := "" | |
| 78 | migrate | |