Patch title: Release 94 bulk changes
Abstract:
File: /pliant/fullpliant/user.pli
Key:
    Removed line
    Added line
abstract
  [Users database definition.]

submodule "/pliant/appli/database.pli"
submodule "/pliant/storage/database.pli"
module "/pliant/language/type/text/str8.pli"

public


type UserRight
  field Char auth <- "0" # authentification level: 0 = none, 1 = clear password, 2 = chalenge password, 3 = strong crypto
  field Str ip # ip domain
  field Str server
  field Str right

type User
  field Str first_name name abstract
  field Str email homepage contact
  field Str password_md5
  field Str public_key
  field Str language
  field Str options
  field Str style_options
  field Set:UserRight right
  field Set:Str template
  field Set:Str mailbox
  field Int uid <- undefined ; field Str computer

type UserDatabase
  field Set:User user


type UserSessionKey
  field Str key
  field Str8 key
  field DateTime timestamp

type UserSecret
  field Str password_md5
  field Set:Str password_list
  field Str shaker
  field Str private_key
  field Str8 private_key
  field Str key_md5
  field Set:UserSessionKey session
  field Set:UserSessionKey host_session

type UserSecretDatabase
  field Set:UserSecret user
  field Str password


type UserBookmark
  field Str first_name name abstract
  field Str mailbox url contact
  field Str keywords

type User2
  field Set:UserBookmark bookmark
  field (Set Set:Anything) session
  field DateTime from to <- undefined ; field Str ip comment # used by login.pli

type UserDatabase2
  field Set:User2 user


(gvar Database:UserDatabase user_database) load "security:/user.pdb" log "security:/user.log" mount "/pliant/user"
gvar (Data Set:User) user :> user_database:data:user
(gvar Database:UserSecretDatabase user_secret_database) load "security:/user_secret.pdb"
(gvar Database:UserDatabase2 user_database2) load "security:/user2.pdb" mount "/pliant2/user"


function migrate
  each u user
    if u:password_md5<>""
      if not exists:(user_secret_database:data:user keyof:u)
        user_secret_database:data:user create keyof:u
      user_secret_database:data:user:(keyof u) password_md5 := u password_md5
      u password_md5 := ""
migrate