Warning: Reason support is experimental. We are looking for beta-tester and contributors.

Module User_sql

module User_sql : sig..end

The abstract type of user ids

module Types : sig..end
exception NotAnUser

Exception raised when a string cannot be translated into a real user

val new_user : 
  name:string ->
  password:Types.pwd ->
  fullname:string ->
  email:string option ->
  dyn:bool -> (Types.userid * Types.pwd) Lwt.t

Creates a user. The password passed as argument must be unencrypted. Returns the user id and its password after an eventual encryption.

val new_parameterized_group : 
  prefix:string ->
  name:string ->
  descr:string ->
  find_param:Types.find_param ->
  'a Types.parameterized_group Lwt.t
val new_nonparameterized_group : 
  prefix:string ->
  name:string -> descr:string -> Types.user Lwt.t
exception NotBasicUser of Types.userdata
val get_basicuser_by_login : string -> Types.userid Lwt.t
val get_basicuser_data : Types.userid -> Types.userdata Lwt.t
val get_parameterized_user_data : 
  'a Types.parameterized_group -> Types.userdata Lwt.t
val get_user_data : Types.user -> Types.userdata Lwt.t
val groups_of_user : user:Types.user -> Types.user list Lwt.t

Returns the groups in which a user is directly included

val users_in_group : 
  ?generic:bool ->
  group:Types.user -> Types.user list Lwt.t

Returns the users or groups inside a group. If generic is false, inclusions coming from generic edges are not returned

val add_to_group : user:Types.user -> group:Types.user -> unit Lwt.t
val remove_from_group : user:Types.user -> group:Types.user -> unit Lwt.t
val add_generic_inclusion : 
  subset:'a Types.parameterized_group ->
  superset:'a Types.parameterized_group -> unit Lwt.t
val add_to_group_generic : 
  user:'a Types.parameterized_group ->
  group:'a Types.parameterized_group -> unit Lwt.t

Same as add_generic_inclusion. Use the one you prefer.

val delete_user : userid:Types.userid -> unit Lwt.t
val update_data : 
  userid:Types.userid ->
  ?password:Types.pwd ->
  ?fullname:string ->
  ?email:string option -> ?dyn:bool -> unit -> unit Lwt.t
val userid_to_string : Types.userid -> string Lwt.t

Converts an userid to a string, by giving the corresponding login field. Raises Not_found if the user does not exists.

val user_to_string : ?expand_param:bool -> Types.user -> string Lwt.t

Converts an user to a string. Basic users are converted as per userid_to_string. Groups are written #group(val) where group is the name used at the creation of the group, and val is the int32 parameter of the group. If expand_param is true the function tries to convert int32 into a string, using the functions passed as arguments when #group was defined.

val get_user_by_name : string -> Types.user Lwt.t

Returns the user that corresponds to a given string (inverse of the function user_to_string, or raises Not_found if the user does not exists

val all_users : unit -> Types.users Lwt.t

Returns a list of all the existing users and groups.

val user_type : Types.user -> [ `Group | `Role | `User ] Lwt.t

Users settings

type user_settings = {
  basicusercreation: bool;  registration_mail_from: string;  registration_mail_addr: string;  registration_mail_subject: string;  groups: string;  non_admin_can_create: bool;}
val get_users_settings : unit -> user_settings Lwt.t
val set_users_settings : user_settings -> unit Lwt.t
val get_users_login : 
  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