@import org.incal.play.controllers.WebContext @import org.incal.play.controllers.WebContext._ @import views.html.documentation.core @import views.html.documentation.{sectionNavigation, imageSection, section} @import org.incal.play.routes.CustomDirAssets @import org.ada.web.controllers.UserDataSetPermissions @()(implicit context: WebContext) @core("Authentication and User Management") { @sectionNavigation()( ("section_ldap", "LDAP Settings"), ("section_user_management", "Basic User Management"), ("section_permissions", "Permissions") ) @imageSection(id = Some("section_ldap"), caption = Some("LDAP Settings"), picPath = Some("images/documentation/ldap_settings.png"), withLine = true, picOffset = 0) {

Ada does not store any passwords but rather relies on LDAP for authentication. Several LDAP settings are available, which all start with the ldap prefix (e.g. ldap.dit):


In nutshell, there are two basic scenarios:

1. if you don't have an LDAP server, don't need authentication, and want to use dummy admin and basic users you can simply set the following lines in custom.conf:

ldap {
    mode = "none"
    debugusers = true
}
or
ldap {
    mode = "local"
    port = "65505"
    debugusers = true
}


2. If you have an existing LDAP server you want to authenticate against you need to configure the host and bind password environmental variables in set_env.sh

export ADA_LDAP_HOST="ldap.north.edu"
export ADA_LDAP_BIND_PASSWORD="XXX"
and set the following lines in custom.conf
ldap {
    dit = "cn=accounts,dc=north,dc=edu"
    groups = ["cn=ada-group,cn=groups,cn=accounts,dc=north,dc=edu"]
    bindDN = "uid=ldap-reader,cn=users,cn=accounts,dc=north,dc=edu"
}
or without environmental variables (purely in custom.conf) as
ldap {
    host = "ldap.north.edu"
    dit = "cn=accounts,dc=north,dc=edu"
    groups = ["cn=ada-group,cn=groups,cn=accounts,dc=north,dc=edu"]
    bindDN = "uid=ldap-reader,cn=users,cn=accounts,dc=north,dc=edu"
    bindPassword = "XXX
}
The currently used LDAP settings can be reviewed by clicking on LDAP Settings located in the Admin menu (see the screenshot on on the right).

} @imageSection(id = Some("section_user_management"), caption = Some("Basic User Management"), picPath = Some("images/documentation/admin_menu.png"), withLine = true) {

There are several basic user management actions admins can conveniently perform:

} @section(id = Some("section_permissions"), caption = Some("Permissions"), withLine = false) {

Admins have access to all the data sets and can perform all the actions throughout the application. On the other side, all non-admin users need to have explicitly assigned permissions to able to access specific data sets and perform specific actions. Basic users can not execute or manipulate any data set import or transformation, or manage other users's permissions (obviously).

All data set permissions start with DS: prefix and can be fine grained to the level of individual actions following the hierarchy: DS:[data set id].[controller].[action].

The [controller] corresponds to an actual web controller, which serves actions for the tabs or menu options in the top bar: Data set permissions can by assigned by choosing → Custom and selecting a desired data set id, controller name, and action. Note that a wildcard ALL can be selected as a controller or action.
Examples:

In a nutshell, there are three common permission scenarios facilitated by the following functions:

} {
} }