Module User_sql.​Types

module Types : sig..end

type userid = [ `User ] Opaque.int32_t

The abstract type of user ids

val userid_from_sql : int32 -> userid
val sql_from_userid : userid -> int32
val string_from_userid : userid -> string
type pwd =  | Connect_forbidden | Ocsimore_user_plain of string | Ocsimore_user_crypt of string | Ocsimore_user_safe of Bcrypt.hash_t | External_Auth
type find_param = {
  param_description: string;  param_get: 
    unit ->
    < id : < get : unit; nul : Sql.non_nullable; t : Sql.int32_t >
     Sql.t;
     title : < get : unit; nul : Sql.nullable; t : Sql.string_t >
     Sql.t >
    list Lwt.t
;
  param_display: (int32 -> string Lwt.t) option;  find_param_functions:
    ((string -> int32 Lwt.t) * (int32 -> string Lwt.t)) option
;
}

Description of the parameter of a paramaterized group

type userdata = {
  user_id: userid;  user_login: string;  user_pwd: pwd;  user_fullname: string;  user_email: string option;  user_dyn: bool;  user_kind: 
    [ `BasicUser
    | `NonParameterizedGroup
    | `ParameterizedGroup of find_param option ]
;
}
type 'a parameterized_group
val parameterized_group_from_userid : userid -> 'a parameterized_group
type user
val apply_parameterized_group : 
  'a parameterized_group ->
  'a Opaque.int32_t -> user
val ($) : 
  'a parameterized_group ->
  'a Opaque.int32_t -> user
val basic_user : userid -> user
val non_parameterized_group : userid -> user
val userid_from_user : user -> userid
val is_basic_user : user -> userid option

Converts an user back into an userid, if possible

val user_is_applied_parameterized_group : 
  user:user ->
  pgroup:'a parameterized_group ->
  'a Opaque.int32_t option

Returns Some v is user is group $ v, or None otherwise

type 'a admin_writer_reader = {
  grp_admin: 'a parameterized_group;  grp_writer: 'a parameterized_group;  grp_reader: 'a parameterized_group;}
type users = {
  users: userdata list Lazy.t;  groups: userdata list Lazy.t;  roles: userdata list Lazy.t;}