1afc8a799Smiramurali23<loader loading="loading"></loader> 2afc8a799Smiramurali23<div class="ldap" id="configuration-ldap"> 3afc8a799Smiramurali23 <div class="row column"> 4afc8a799Smiramurali23 <h1>LDAP</h1> 5afc8a799Smiramurali23 </div> 6afc8a799Smiramurali23 <div class="row column"> 7afc8a799Smiramurali23 <p>Configure LDAP settings and manage role groups.</p> 8afc8a799Smiramurali23 </div> 9afc8a799Smiramurali23 <div class="row column"> 10afc8a799Smiramurali23 <h2 class="subhead"> 11afc8a799Smiramurali23 Settings 12afc8a799Smiramurali23 </h2> 13afc8a799Smiramurali23 </div> 14afc8a799Smiramurali23 <div class="row column"> 15afc8a799Smiramurali23 <label class="control-check ldap__control-check"> 1628e9ed8bSDixsie Wolmers <input type="checkbox" aria-labelledby="ldap-auth-label" 17afc8a799Smiramurali23 ng-change="updateServiceEnabled(); ldap__configuration.$setUntouched()" 18afc8a799Smiramurali23 ng-model="ldapProperties.ServiceEnabled" /> 19afc8a799Smiramurali23 <span class="control__indicator"></span> 2028e9ed8bSDixsie Wolmers <span id="ldap-auth-label" class="control__label"> 21afc8a799Smiramurali23 <strong>Enable LDAP authentication</strong> <br> 22afc8a799Smiramurali23 LDAP authentication must be enabled to modify role groups. 23afc8a799Smiramurali23 </span> 24afc8a799Smiramurali23 </label> 25afc8a799Smiramurali23 </div> 26afc8a799Smiramurali23 <div class="row column"> 27afc8a799Smiramurali23 <form id="ldap__configuration" name="ldap__configuration" ng-class="{'submitted': submitted}" 28afc8a799Smiramurali23 class="ldap__configuration" novalidate> 29afc8a799Smiramurali23 <fieldset ng-disabled="!ldapProperties.ServiceEnabled"> 3028e9ed8bSDixsie Wolmers <legend class="screen-reader-offscreen">LDAP Settings</legend> 31afc8a799Smiramurali23 <div class="ldap__configure-settings row column"> 32*7bdb91d4SDerick Montague <div class="large-3 column ldap__ssl-column" ng-class="{'disabled' : !ldapProperties.ServiceEnabled}"> 33*7bdb91d4SDerick Montague <label class="control-check" ng-class="{'disabled' : (!ldapCertificate || !caCertificate) || !ldapProperties.ServiceEnabled}"> 3428e9ed8bSDixsie Wolmers <input id="secure-ldap-ssl" aria-labelledby="use-ssl" type="checkbox" 35*7bdb91d4SDerick Montague ng-change="ldap__configuration.ldap__uri.$touched = true" 3628e9ed8bSDixsie Wolmers ng-model="ldapProperties.useSSL" ng-checked="ldapProperties.useSSL" 37*7bdb91d4SDerick Montague ng-disabled="!ldapCertificate || !caCertificate" /> 38afc8a799Smiramurali23 <span class="control__indicator"></span> 3928e9ed8bSDixsie Wolmers <span class="control__label" id="use-ssl">Secure LDAP using SSL</span> 40afc8a799Smiramurali23 </label> 41*7bdb91d4SDerick Montague <dl class="ldap__certificate-info" ng-if="caCertificate && ldapCertificate"> 42*7bdb91d4SDerick Montague <dt>CA certificate valid until</dt> 43*7bdb91d4SDerick Montague <dd>{{caCertificate.ValidNotAfter | localeDate }}</dd> 44*7bdb91d4SDerick Montague </dl> 45*7bdb91d4SDerick Montague <dl class="ldap__certificate-info" ng-if="caCertificate && ldapCertificate"> 46*7bdb91d4SDerick Montague <dt>LDAP certificate valid until</dt> 47*7bdb91d4SDerick Montague <dd>{{ldapCertificate.ValidNotAfter | localeDate }}</dd> 48*7bdb91d4SDerick Montague </dl> 49*7bdb91d4SDerick Montague <p class="ldap__certificate-info" ng-if="!ldapCertificate || !caCertificate"> 50*7bdb91d4SDerick Montague <span>A CA certificate and LDAP certificate are required. One or more are missing.</span> 51*7bdb91d4SDerick Montague </p> 52*7bdb91d4SDerick Montague <p ng-if="!ldapCertificate || !caCertificate" class="ldap__certificate-info"> 53*7bdb91d4SDerick Montague <a ng-class="{'disabled': !ldapProperties.ServiceEnabled}" ng-href="{{ldapProperties.ServiceEnabled ? '#/access-control/ssl-certificates' : ''}}">Go to SSL certificates</a> 54*7bdb91d4SDerick Montague </p> 55afc8a799Smiramurali23 </div> 56afc8a799Smiramurali23 <div class="large-9 columns ldap__server-info"> 57afc8a799Smiramurali23 <div class="column service-type-column"> 58afc8a799Smiramurali23 <fieldset class="ldap__server-info-service-type"> 59afc8a799Smiramurali23 <legend class="content-label">Service Type</legend> 6028e9ed8bSDixsie Wolmers <label class="control-radio control__radio__label">Open LDAP 61*7bdb91d4SDerick Montague <input type="radio" name="service_enabled_type" id="open-ldap" value="LDAP" 62afc8a799Smiramurali23 ng-checked="ldapProperties.LDAPServiceEnabled" 63afc8a799Smiramurali23 ng-change="ldapProperties.EnabledServiceUpdated = true" ng-model="ldapProperties.EnabledServiceType" 64afc8a799Smiramurali23 required /> 65afc8a799Smiramurali23 <span class="control__indicator control__indicator-on control__indicator-service-type"></span> 66afc8a799Smiramurali23 </label> 6728e9ed8bSDixsie Wolmers <label class="control-radio control__radio__label">Active directory 68afc8a799Smiramurali23 <input type="radio" name="service_enabled_type" id="active-directory" 69*7bdb91d4SDerick Montague ng-change="ldapProperties.EnabledServiceUpdated = true" value="ActiveDirectory" 70afc8a799Smiramurali23 ng-checked="ldapProperties.ADServiceEnabled" ng-model="ldapProperties.EnabledServiceType" 71afc8a799Smiramurali23 required /> 72afc8a799Smiramurali23 <span class="control__indicator control__indicator-on control__indicator-service-type"></span> 73afc8a799Smiramurali23 </label> 74afc8a799Smiramurali23 </fieldset> 75afc8a799Smiramurali23 </div> 76afc8a799Smiramurali23 <div class="medium-6 large-4 columns"> 77afc8a799Smiramurali23 <label for="ldap__uri">Server uri</label> 78afc8a799Smiramurali23 <input id="ldap__uri" name="ldap__uri" type="text" 79*7bdb91d4SDerick Montague ng-change="ldapProperties.ServiceAddressesUpdated = true" 80*7bdb91d4SDerick Montague ng-model="ldapProperties.ServiceAddresses[0]" 81*7bdb91d4SDerick Montague ng-pattern="ldapProperties.useSSL ? '^ldaps://.*' : '^ldap://.*'" 82afc8a799Smiramurali23 required /> 83afc8a799Smiramurali23 <div ng-messages="ldap__configuration.ldap__uri.$error" class="form-error" 84*7bdb91d4SDerick Montague ng-class="{'visible' : ldap__configuration.ldap__uri.$touched || submitted}" role="alert"> 85afc8a799Smiramurali23 <p ng-message="required">Field is required</p> 86*7bdb91d4SDerick Montague <p ng-message="pattern">Must start with {{ldapProperties.useSSL ? 'ldaps://' : 'ldap://'}}</p> 87afc8a799Smiramurali23 </div> 88afc8a799Smiramurali23 </div> 89afc8a799Smiramurali23 <div class="medium-6 large-4 columns"> 90afc8a799Smiramurali23 <label for="ldap__bind__dn">Bind DN</label> 91afc8a799Smiramurali23 <input id="ldap__bind__dn" name="ldap__bind__dn" type="text" 92afc8a799Smiramurali23 ng-change="ldapProperties.UsernameUpdated = true" ng-model="ldapProperties.Username" required /> 93afc8a799Smiramurali23 <div ng-messages="ldap__configuration.ldap__bind__dn.$error" class="form-error" 94*7bdb91d4SDerick Montague ng-class="{'visible' : ldap__configuration.ldap__bind__dn.$touched || submitted}" role="alert"> 95afc8a799Smiramurali23 <p ng-message="required">Field is required</p> 96afc8a799Smiramurali23 </div> 97afc8a799Smiramurali23 </div> 98afc8a799Smiramurali23 <div class="medium-6 large-4 columns"> 99afc8a799Smiramurali23 <label for="ldap__bind_pw">Bind password</label> 100afc8a799Smiramurali23 <input id="ldap__bind_pw" type="{{showpassword ? 'text' : 'password'}}" name="ldap__bind_pw" 101afc8a799Smiramurali23 ng-change="ldapProperties.PasswordUpdated = true" autocomplete="off" ng-model="ldapProperties.Password" 102afc8a799Smiramurali23 required /> 103afc8a799Smiramurali23 <button ng-model="showpassword" ng-class="{'disabled' : !ldap__configuration.$valid}" 104afc8a799Smiramurali23 ng-click="togglePassword = !togglePassword; showpassword = !showpassword;" class="password-toggle"> 105afc8a799Smiramurali23 <span ng-hide="togglePassword">Show</span> 106afc8a799Smiramurali23 <span ng-show="togglePassword">Hide</span> 107afc8a799Smiramurali23 </button> 108afc8a799Smiramurali23 <div ng-messages="ldap__configuration.ldap__bind_pw.$error" class="form-error" 109*7bdb91d4SDerick Montague ng-class="{'visible' : ldap__configuration.ldap__bind_pw.$touched || submitted}" role="alert"> 110afc8a799Smiramurali23 <p ng-message="required">Field is required</p> 111afc8a799Smiramurali23 </div> 112afc8a799Smiramurali23 </div> 113afc8a799Smiramurali23 <div class="medium-6 large-4 columns"> 114afc8a799Smiramurali23 <label for="ldap__base__dn">Base DN</label> 115afc8a799Smiramurali23 <input id="ldap__base__dn" name="ldap__base__dn" type="text" 116afc8a799Smiramurali23 ng-change="ldapProperties.BaseDistinguishedNamesUpdated = true" 117afc8a799Smiramurali23 ng-model="ldapProperties.BaseDistinguishedNames[0]" required /> 118afc8a799Smiramurali23 <div ng-messages="ldap__configuration.ldap__base__dn.$error" class="form-error" 119*7bdb91d4SDerick Montague ng-class="{'visible' : ldap__configuration.ldap__base__dn.$touched || submitted}" role="alert"> 120afc8a799Smiramurali23 <p ng-message="required">Field is required</p> 121afc8a799Smiramurali23 </div> 122afc8a799Smiramurali23 </div> 123afc8a799Smiramurali23 <div class="medium-6 large-4 columns"> 124afc8a799Smiramurali23 <label for="ldap__user_attribute">User id attribute (optional)</label> 125afc8a799Smiramurali23 <input id="ldap__user_attribute" name="ldap__user_attribute" type="text" 126afc8a799Smiramurali23 ng-change="ldapProperties.UsernameAttributeUpdated = true" ng-model="ldapProperties.UsernameAttribute" 127afc8a799Smiramurali23 class="ldap__optional-field" /> 128afc8a799Smiramurali23 </div> 129afc8a799Smiramurali23 <div class="medium-6 large-4 columns"> 130afc8a799Smiramurali23 <label for="ldap__group_attribute">Group id attribute (optional)</label> 131afc8a799Smiramurali23 <input id="ldap__group_attribute" name="ldap__group_attribute" type="text" 132afc8a799Smiramurali23 ng-change="ldapProperties.GroupsAttributeUpdated = true" ng-model="ldapProperties.GroupsAttribute" 133afc8a799Smiramurali23 class="ldap__optional-field" /> 134afc8a799Smiramurali23 </div> 135afc8a799Smiramurali23 <div class="column ldap__configuration-buttons"> 13628e9ed8bSDixsie Wolmers <button type="submit" class="btn btn-primary" ng-disabled="!ldap__configuration.$valid" 137afc8a799Smiramurali23 ng-click="$parent.submitted=true; ldap__configuration.$valid && saveLdapSettings(); ldap__configuration.$setUntouched()">Save</button> 138afc8a799Smiramurali23 <button type="button" class="btn btn-secondary" 139afc8a799Smiramurali23 ng-click="loadLdap(); ldap__configuration.$setUntouched()">Reset</button> 140afc8a799Smiramurali23 </div> 141afc8a799Smiramurali23 </fieldset> 142afc8a799Smiramurali23 </form> 143afc8a799Smiramurali23 </div> 144afc8a799Smiramurali23</div> 145afc8a799Smiramurali23<div class="ldap-groups row column"> 146afc8a799Smiramurali23 <h2 class="small-12 subhead"> 147afc8a799Smiramurali23 Role groups 148afc8a799Smiramurali23 </h2> 149afc8a799Smiramurali23 <div class="row column"> 150afc8a799Smiramurali23 <div class="small-12"> 151afc8a799Smiramurali23 <ldap-user-roles role-groups="roleGroups" role-group-type="roleGroupType" enabled="ldapProperties.ServiceEnabled"> 152afc8a799Smiramurali23 </ldap-user-roles> 153afc8a799Smiramurali23 </div> 154afc8a799Smiramurali23 </div> 155afc8a799Smiramurali23</div>