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