Files @ b232a36cc51f
Branch filter:

Location: kallithea/rhodecode/templates/index.html - annotation

Thayne Harbaugh
Improve LDAP authentication

* Adds an LDAP filter for locating the LDAP object
* Adds a search scope policy when using the Base DN
* Adds option required certificate policy when using LDAPS
* Adds attribute mapping for username, firstname, lastname, email
* Initializes rhodecode user using LDAP info (no longer uses "@ldap")
* Remembers the user object (DN) in the user table
* Updates admin interfaces
* Authenticates against actual user objects in LDAP
* Possibly other things.

Really, this should be extended to a list of LDAP configurations, but this is a good start.
1e757ac98988
1e757ac98988
1e757ac98988
a1ec653f5f95
1e757ac98988
1e757ac98988
b75b77ef649d
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
81c173490971
81c173490971
81c173490971
81c173490971
81c173490971
81c173490971
81c173490971
81c173490971
81c173490971
1e757ac98988
1e757ac98988
1e757ac98988
fdb984a94d5b
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
fcf599cd3404
1e757ac98988
1e757ac98988
1e757ac98988
1e757ac98988
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
dff6d5cb8bba
5e209dcd3821
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
5e209dcd3821
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
5e209dcd3821
5e209dcd3821
5e209dcd3821
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
dff6d5cb8bba
fdb984a94d5b
5e209dcd3821
1294f2baf2bc
fdb984a94d5b
fdb984a94d5b
5e209dcd3821
5e209dcd3821
82aaf4e71817
6d37fe113da0
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
82aaf4e71817
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
1e757ac98988
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
dff6d5cb8bba
fdb984a94d5b
fdb984a94d5b
dff6d5cb8bba
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
dff6d5cb8bba
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
fdb984a94d5b
1e757ac98988
## -*- coding: utf-8 -*-
<%inherit file="base/base.html"/>
<%def name="title()">
    ${_('Dashboard')} - ${c.rhodecode_name}
</%def>
<%def name="breadcrumbs()">
	${c.rhodecode_name}
</%def>
<%def name="page_nav()">
	${self.menu('home')}
</%def>
<%def name="main()">
	<%def name="get_sort(name)">
		<%name_slug = name.lower().replace(' ','_') %>
		
		%if name_slug == c.sort_slug:
		  %if c.sort_by.startswith('-'):
		    <a href="?sort=${name_slug}">${name}&uarr;</a>
		  %else:
		    <a href="?sort=-${name_slug}">${name}&darr;</a>
		  %endif:
		%else:
		    <a href="?sort=${name_slug}">${name}</a>
		%endif
	</%def>
	
    <div class="box">
	    <!-- box / title -->
	    <div class="title">
	        <h5>${_('Dashboard')}
	        <input class="top-right-rounded-corner top-left-rounded-corner bottom-left-rounded-corner bottom-right-rounded-corner" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
	        </h5>
	        %if c.rhodecode_user.username != 'default':
		        %if h.HasPermissionAny('hg.admin','hg.create.repository')():
		        <ul class="links">
		          <li>
		            <span>${h.link_to(_('ADD NEW REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
		          </li>          
		        </ul>  	        
		        %endif
		    %endif
	    </div>
	    <!-- end box / title -->
        <div class="table">
            <table>
            <thead>
	            <tr>
			        <th class="left">${get_sort(_('Name'))}</th>
			        <th class="left">${get_sort(_('Description'))}</th>
			        <th class="left">${get_sort(_('Last change'))}</th>
			        <th class="left">${get_sort(_('Tip'))}</th>
			        <th class="left">${get_sort(_('Owner'))}</th>
			        <th class="left">${_('RSS')}</th>
			        <th class="left">${_('Atom')}</th>
	            </tr>
            </thead>
            <tbody>
		    %for cnt,repo in enumerate(c.repos_list):
		        <tr class="parity${cnt%2}">
		            <td>
		            <div style="white-space: nowrap">
		             ## TYPE OF REPO
		             %if repo['repo'].dbrepo.repo_type =='hg':
		               <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="/images/icons/hgicon.png"/>
		             %elif repo['repo'].dbrepo.repo_type =='git':
		               <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="/images/icons/giticon.png"/>
		             %else:
		               
		             %endif 
		            
		             ##PRIVATE/PUBLIC
		             %if repo['repo'].dbrepo.private:
		                <img class="icon" title="${_('private repository')}" alt="${_('private repository')}" src="/images/icons/lock.png"/>
		             %else:
		                <img class="icon" title="${_('public repository')}" alt="${_('public repository')}" src="/images/icons/lock_open.png"/>
		             %endif
		            
		            ##NAME   
		            ${h.link_to(repo['name'],
		                h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
		            %if repo['repo'].dbrepo.fork:
		            	<a href="${h.url('summary_home',repo_name=repo['repo'].dbrepo.fork.repo_name)}">
		            	<img class="icon" alt="${_('fork')}"
		            	title="${_('Fork of')} ${repo['repo'].dbrepo.fork.repo_name}" 
		            	src="/images/icons/arrow_divide.png"/></a>
		            %endif
		            </div>
		            </td>
		            ##DESCRIPTION
		            <td><span class="tooltip" title="${h.tooltip(repo['description'])}">
		               ${h.truncate(repo['description'],60)}</span>
		            </td>
		            ##LAST CHANGE
		            <td>
		              <span class="tooltip" title="${repo['last_change']}">
		              ${h.age(repo['last_change'])}</span>
		            </td>
		            <td>
		            	%if repo['rev']>=0:
		            	${h.link_to('r%s:%s' % (repo['rev'],h.short_id(repo['tip'])),
		                h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']),
		                class_="tooltip",
		                title=h.tooltip(repo['last_msg']))}
		            	%else:
		            		${_('No changesets yet')}
		            	%endif    
		            </td>
		            <td title="${repo['contact']}">${h.person(repo['contact'])}</td>
		            <td>
		                <a title="${_('Subscribe to %s rss feed')%repo['name']}" class="rss_icon"  href="${h.url('rss_feed_home',repo_name=repo['name'])}"></a>
		            </td>        
		            <td>
		                <a title="${_('Subscribe to %s atom feed')%repo['name']}"  class="atom_icon" href="${h.url('atom_feed_home',repo_name=repo['name'])}"></a>
		            </td>
		        </tr>
		    %endfor
            </tbody>
            </table>
            </div>
    </div>
    
    
    <script type="text/javascript">
     var D = YAHOO.util.Dom;
     var E = YAHOO.util.Event;
     var S = YAHOO.util.Selector;
     
     var q_filter = D.get('q_filter');
     var F = YAHOO.namespace('q_filter'); 
     
     E.on(q_filter,'click',function(){
    	q_filter.value = '';
     });

     F.filterTimeout = null;
     
     F.updateFilter  = function() { 
    	// Reset timeout 
        F.filterTimeout = null;
    	
        var obsolete = [];
        var nodes = S.query('div.table tr td div a.repo_name');
        var req = D.get('q_filter').value;
        for (n in nodes){
            D.setStyle(nodes[n].parentNode.parentNode.parentNode,'display','')
        }
        if (req){
	        for (n in nodes){
	        	if (nodes[n].innerHTML.toLowerCase().indexOf(req) == -1) {
	        		obsolete.push(nodes[n]); 
	        	}
	    	}
	        if(obsolete){
		        for (n in obsolete){
		        	D.setStyle(obsolete[n].parentNode.parentNode.parentNode,'display','none');
		        }
	        }
        }
     }
     
     E.on(q_filter,'keyup',function(e){
    	 clearTimeout(F.filterTimeout); 
    	 setTimeout(F.updateFilter,600); 
     });
     
    </script>
    	
</%def>