auth_settings.html
137 lines
| 5.4 KiB
| text/html
|
HtmlLexer
Bradley M. Kuhn
|
r4116 | ## -*- coding: utf-8 -*- | ||
<%inherit file="/base/base.html"/> | ||||
<%def name="title()"> | ||||
${_('Authentication Settings')} | ||||
%if c.rhodecode_name: | ||||
· ${c.rhodecode_name} | ||||
%endif | ||||
</%def> | ||||
<%def name="breadcrumbs_links()"> | ||||
${h.link_to(_('Admin'),h.url('admin_home'))} | ||||
» | ||||
${_('Authentication')} | ||||
</%def> | ||||
<%def name="page_nav()"> | ||||
${self.menu('admin')} | ||||
</%def> | ||||
<%def name="main()"> | ||||
<div class="box"> | ||||
<!-- box / title --> | ||||
<div class="title"> | ||||
${self.breadcrumbs()} | ||||
</div> | ||||
${h.form(url('auth_settings'))} | ||||
<div class="form"> | ||||
## enabled auth plugins | ||||
<h1>${_('Authentication Plugins')}</h1> | ||||
<div class="fields"> | ||||
<div class="field"> | ||||
<div class="label"><label for="auth_plugins">${_("Enabled Plugins")}</label></div> | ||||
<div class="input">${h.text("auth_plugins", class_='large')} | ||||
<span class="help-block">${_('Comma separated list of plugins. Order of plugins is also order in which RhodeCode will try to authenticate user')}</span> | ||||
<div style="padding:10px 0px 10px 0px;font-weight: bold">${_('Available built-in plugins')}</div> | ||||
<ul> | ||||
%for plugin_path in c.available_plugins: | ||||
<li> | ||||
<div style="padding:3px 0px 3px 0px"> | ||||
<span style="margin: 0px 10px 0px 0px" plugin_id="${plugin_path}" class="toggle-plugin btn btn-mini ${'btn-success' if plugin_path in c.enabled_plugins else ''}"> | ||||
${_('enabled') if plugin_path in c.enabled_plugins else _('disabled')}</span>${plugin_path} | ||||
</div> | ||||
</li> | ||||
%endfor | ||||
</ul> | ||||
</div> | ||||
</div> | ||||
<div class="buttons"> | ||||
${h.submit('save',_('Save'),class_="btn")} | ||||
</div> | ||||
</div> | ||||
%for cnt, module in enumerate(c.auth_plugins): | ||||
<% pluginName = c.auth_plugins_shortnames[module] %> | ||||
<h1>${_('Plugin')}: ${pluginName}</h1> | ||||
<div class="fields"> | ||||
## autoform generation, based on plugin definition from it's settings | ||||
%for setting in c.plugin_settings[module]: | ||||
<% fullsetting = "auth_%s_%s" % (pluginName, setting["name"]) %> | ||||
<% displayname = (setting["formname"] if ("formname" in setting) else setting["name"]) %> | ||||
%if setting["type"] == "password": | ||||
<div class="field"> | ||||
<div class="label"><label for="${fullsetting}">${_(displayname)}</label></div> | ||||
<div class="input"> | ||||
${h.password(fullsetting,class_='small')} | ||||
<span class="help-block">${setting["description"]}</span> | ||||
</div> | ||||
</div> | ||||
%elif setting["type"] in ["string", "int"]: | ||||
<div class="field"> | ||||
<div class="label"><label for="${fullsetting}">${_(displayname)}</label></div> | ||||
<div class="input"> | ||||
${h.text(fullsetting,class_='small')} | ||||
<span class="help-block">${setting["description"]}</span> | ||||
</div> | ||||
</div> | ||||
%elif setting["type"] == "bool": | ||||
<div class="field"> | ||||
<div class="label label-checkbox"><label for="${fullsetting}">${_(displayname)}</label></div> | ||||
<div class="checkboxes"> | ||||
<div class="checkbox">${h.checkbox(fullsetting,True,class_='small')}</div> | ||||
<span class="help-block">${setting["description"]}</span> | ||||
</div> | ||||
</div> | ||||
%elif setting["type"] == "select": | ||||
<div class="field"> | ||||
<div class="label"><label for="${fullsetting}">${_(displayname)}</label></div> | ||||
<div class="select"> | ||||
${h.select(fullsetting,setting['values'][0],setting['values'],class_='small')} | ||||
<span class="help-block">${setting["description"]}</span> | ||||
</div> | ||||
</div> | ||||
%else: | ||||
<div class="field"> | ||||
<div class="label"><label for="${fullsetting}">${_(displayname)}</label></div> | ||||
<div class="input">This field is of type ${setting['type']}, which cannot be displayed. Must be one of [string|int|bool|select].</div> | ||||
<span class="help-block">${setting["description"]}</span> | ||||
</div> | ||||
%endif | ||||
%endfor | ||||
</div> | ||||
%endfor | ||||
</div> | ||||
${h.end_form()} | ||||
</div> | ||||
<script> | ||||
YUE.on(YUQ('.toggle-plugin'),'click', function(e){ | ||||
var auth_plugins_input = YUD.get('auth_plugins'); | ||||
var notEmpty = function(element, index, array) { | ||||
return (element != ""); | ||||
} | ||||
var elems = auth_plugins_input.value.split(',').filter(notEmpty); | ||||
var cur_button = e.currentTarget; | ||||
var plugin_id = YUD.getAttribute(cur_button, 'plugin_id'); | ||||
if(YUD.hasClass(cur_button, 'btn-success')){ | ||||
elems.splice(elems.indexOf(plugin_id), 1); | ||||
auth_plugins_input.value = elems.join(','); | ||||
YUD.removeClass(cur_button, 'btn-success'); | ||||
cur_button.innerHTML = _TM['disabled']; | ||||
} | ||||
else{ | ||||
console.log(elems) | ||||
if(elems.indexOf(plugin_id) == -1){ | ||||
elems.push(plugin_id); | ||||
} | ||||
auth_plugins_input.value = elems.join(','); | ||||
YUD.addClass(cur_button, 'btn-success'); | ||||
cur_button.innerHTML = _TM['enabled']; | ||||
} | ||||
}) | ||||
</script> | ||||
</%def> | ||||