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