---
name: "mod_auth"
section: "3erl"
platform: "linux"
package: "erlang-manpages"
version: "1:25.2.3+dfsg-1+deb12u4"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/mod_auth"
---

# mod\_auth(3erl)

User authentication using text files, Dets, or Mnesia database.

## NAME

mod\_auth - User authentication using text files, Dets, or Mnesia database.

## DESCRIPTION

This module provides for basic user authentication using textual files, Dets databases, or Mnesia databases.

## EXPORTS

**add\_group\_member(GroupName, UserName, Options) -\> true \| {error, Reason}**\
 **add\_group\_member(GroupName, UserName, Port, Dir) -\> true \| {error, Reason}**\
 **add\_group\_member(GroupName, UserName, Address, Port, Dir) -\> true \| {error, Reason}**\

Types:

GroupName = string()\
 UserName = string()\
 Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 AuthPassword = string()\
 Reason = term()\

*add\_group\_member/3, add\_group\_member/4*, and *add\_group\_member/5* each adds a user to a group. If the group does not exist, it is created and the user is added to the group. Upon successful operation, this function returns *true*. When *add\_group\_members/3* is called, options *Port* and *Dir* are mandatory.

**add\_user(UserName, Options) -\> true\| {error, Reason}**\
 **add\_user(UserName, Password, UserData, Port, Dir) -\> true \| {error, Reason}**\
 **add\_user(UserName, Password, UserData, Address, Port, Dir) -\> true \| {error, Reason}**\

Types:

UserName = string()\
 Options = \[Option\]\
 Option = {password,Password} \| {userData,UserData} \| {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Password = string()\
 UserData = term()\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 AuthPassword =string()\
 Reason = term()\

*add\_user/2, add\_user/5*, and *add\_user/6* each adds a user to the user database. If the operation is successful, this function returns *true*. If an error occurs, *{error,Reason}* is returned. When *add\_user/2* is called, options *Password*, *UserData*, *Port*, and *Dir* are mandatory.

**delete\_group(GroupName, Options) -\> true \| {error,Reason} \<name\>delete\_group(GroupName, Port, Dir) -\> true \| {error, Reason}**\
 **delete\_group(GroupName, Address, Port, Dir) -\> true \| {error, Reason}**\

Types:

Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 GroupName = string()\
 AuthPassword = string()\
 Reason = term()\

*delete\_group/2, delete\_group/3*, and *delete\_group/4* each deletes the group specified and returns *true*. If there is an error, *{error, Reason}* is returned. When *delete\_group/2* is called, option *Port* and *Dir* are mandatory.

**delete\_group\_member(GroupName, UserName, Options) -\> true \| {error, Reason}**\
 **delete\_group\_member(GroupName, UserName, Port, Dir) -\> true \| {error, Reason}**\
 **delete\_group\_member(GroupName, UserName, Address, Port, Dir) -\> true \| {error, Reason}**\

Types:

GroupName = string()\
 UserName = string()\
 Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 AuthPassword = string()\
 Reason = term()\

*delete\_group\_member/3, delete\_group\_member/4*, and *delete\_group\_member/5* each deletes a user from a group. If the group or the user does not exist, this function returns an error, otherwise *true*. When *delete\_group\_member/3* is called, the options *Port* and *Dir* are mandatory.

**delete\_user(UserName,Options) -\> true \| {error, Reason}**\
 **delete\_user(UserName, Port, Dir) -\> true \| {error, Reason}**\
 **delete\_user(UserName, Address, Port, Dir) -\> true \| {error, Reason}**\

Types:

UserName = string()\
 Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 AuthPassword = string()\
 Reason = term()\

*delete\_user/2, delete\_user/3*, and *delete\_user/4* each deletes a user from the user database. If the operation is successful, this function returns *true*. If an error occurs, *{error,Reason}* is returned. When *delete\_user/2* is called, options *Port* and *Dir* are mandatory.

**get\_user(UserName,Options) -\> {ok, #httpd\_user} \|{error, Reason}**\
 **get\_user(UserName, Port, Dir) -\> {ok, #httpd\_user} \| {error, Reason}**\
 **get\_user(UserName, Address, Port, Dir) -\> {ok, #httpd\_user} \| {error, Reason}**\

Types:

UserName = string()\
 Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 AuthPassword = string()\
 Reason = term()\

*get\_user/2, get\_user/3*, and *get\_user/4* each returns an *httpd\_user* record containing the userdata for a specific user. If the user cannot be found, *{error, Reason}* is returned. When *get\_user/2* is called, options *Port* and *Dir* are mandatory.

**list\_groups(Options) -\> {ok, Groups} \| {error, Reason}**\
 **list\_groups(Port, Dir) -\> {ok, Groups} \| {error, Reason}**\
 **list\_groups(Address, Port, Dir) -\> {ok, Groups} \| {error, Reason}**\

Types:

Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 Groups = list()\
 AuthPassword = string()\
 Reason = term()\

*list\_groups/1, list\_groups/2*, and *list\_groups/3* each lists all the groups available. If there is an error, *{error, Reason}* is returned. When *list\_groups/1* is called, options *Port* and *Dir* are mandatory.

**list\_group\_members(GroupName, Options) -\> {ok, Users} \| {error, Reason}**\
 **list\_group\_members(GroupName, Port, Dir) -\> {ok, Users} \| {error, Reason}**\
 **list\_group\_members(GroupName, Address, Port, Dir) -\> {ok, Users} \| {error, Reason}**\

Types:

GroupName = string()\
 Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 Users = list()\
 AuthPassword = string()\
 Reason = term()\

*list\_group\_members/2, list\_group\_members/3*, and *list\_group\_members/4* each lists the members of a specified group. If the group does not exist or there is an error, *{error, Reason}* is returned. When *list\_group\_members/2* is called, options *Port* and *Dir* are mandatory.

**list\_users(Options) -\> {ok, Users} \| {error, Reason}**\
 **list\_users(Port, Dir) -\> {ok, Users} \| {error, Reason}**\
 **list\_users(Address, Port, Dir) -\> {ok, Users} \| {error, Reason}**\

Types:

Options = \[Option\]\
 Option = {port,Port} \| {addr,Address} \| {dir,Directory} \| {authPassword,AuthPassword}\
 Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 Users = list()\
 AuthPassword = string()\
 Reason = atom()\

*list\_users/1, list\_users/2*, and *list\_users/3* each returns a list of users in the user database for a specific *Port/Dir*. When *list\_users/1* is called, options *Port* and *Dir* are mandatory.

**update\_password(Port, Dir, OldPassword, NewPassword, NewPassword) -\> ok \| {error, Reason}**\
 **update\_password(Address,Port, Dir, OldPassword, NewPassword, NewPassword) -\> ok \| {error, Reason}**\

Types:

Port = integer()\
 Address = {A,B,C,D} \| string() \| undefined\
 Dir = string()\
 GroupName = string()\
 OldPassword = string()\
 NewPassword = string()\
 Reason = term()\

*update\_password/5* and *update\_password/6* each updates *AuthAccessPassword* for the specified directory. If *NewPassword* is equal to "NoPassword", no password is required to change authorisation data. If *NewPassword* is equal to "DummyPassword", no changes can be done without changing the password first.

## SEE ALSO

[httpd(3erl)](/httpd/3erl.md), [mod\_alias(3erl)](/mod_alias/3erl.md)
