public List<String> getObservableRepositoryIds( String principal )
throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
{
+ String operation = ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS;
+ return getAccessibleRepositoryIds( principal, operation );
+ }
+
+ public List<String> getManagableRepositoryIds( String principal )
+ throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
+ {
+ String operation = ArchivaRoleConstants.OPERATION_REPOSITORY_UPLOAD;
+
+ return getAccessibleRepositoryIds( principal, operation );
+ }
+
+ private List<String> getAccessibleRepositoryIds( String principal, String operation )
+ throws ArchivaSecurityException, AccessDeniedException, PrincipalNotFoundException
+ {
try
{
User user = securitySystem.getUserManager().findUser( principal );
try
{
String repoId = repo.getId();
- if ( securitySystem.isAuthorized( securitySession,
- ArchivaRoleConstants.OPERATION_REPOSITORY_ACCESS, repoId ) )
+ if ( securitySystem.isAuthorized( securitySession, operation, repoId ) )
{
repoIds.add( repoId );
}
public List<String> getObservableRepositoryIds( String principal )
throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException;
+ /**
+ * Get the list of writable repository ids for the user specified.
+ *
+ * @param principal the principle to obtain the observable repository ids from.
+ * @return the list of observable repository ids.
+ * @throws PrincipalNotFoundException
+ * @throws AccessDeniedException
+ * @throws ArchivaSecurityException
+ */
+ public List<String> getManagableRepositoryIds( String principal )
+ throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException;
+
/**
* Create any missing repository roles for the provided repository id.
*
import org.apache.maven.archiva.repository.project.ProjectModelException;
import org.apache.maven.archiva.repository.project.ProjectModelWriter;
import org.apache.maven.archiva.repository.project.writers.ProjectModel400Writer;
+import org.apache.maven.archiva.security.AccessDeniedException;
import org.apache.maven.archiva.security.ArchivaSecurityException;
import org.apache.maven.archiva.security.PrincipalNotFoundException;
import org.apache.maven.archiva.security.UserRepositories;
public void prepare()
{
- managedRepoIdList =
- new ArrayList<String>( configuration.getConfiguration().getManagedRepositoriesAsMap().keySet() );
+ managedRepoIdList = getManagableRepos();
}
public String input()
this.auditListeners.remove( listener );
}
+ private List<String> getManagableRepos()
+ {
+ try
+ {
+ return userRepositories.getManagableRepositoryIds( getPrincipal() );
+ }
+ catch ( PrincipalNotFoundException e )
+ {
+ getLogger().warn( e.getMessage(), e );
+ }
+ catch ( AccessDeniedException e )
+ {
+ getLogger().warn( e.getMessage(), e );
+ // TODO: pass this onto the screen.
+ }
+ catch ( ArchivaSecurityException e )
+ {
+ getLogger().warn( e.getMessage(), e );
+ }
+ return Collections.emptyList();
+ }
+
private void triggerAuditEvent( String user, String repositoryId, String resource, String action )
{
AuditEvent event = new AuditEvent( repositoryId, user, resource, action );
</li>
</ul>
- <redback:ifAnyAuthorized permissions="archiva-delete-artifact,archiva-manage-users,archiva-access-reports,archiva-manage-configuration">
+ <redback:ifAnyAuthorized permissions="archiva-upload-repository,archiva-delete-artifact,archiva-manage-users,archiva-access-reports,archiva-manage-configuration">
<h5>Manage</h5>
<ul>
<redback:ifAuthorized permission="archiva-access-reports">
<my:currentWWUrl action="pickReport" namespace="/report">Reports</my:currentWWUrl>
</li>
</redback:ifAuthorized>
- <%-- POSTPONED to 1.1 series
- <li class="none">
- <a href="#">Synchronisation</a>
- </li>
- --%>
<redback:ifAuthorized permission="archiva-manage-users">
<li class="none">
<my:currentWWUrl action="userlist" namespace="/security">User Management</my:currentWWUrl>
<li class="none">
<my:currentWWUrl action="configureAppearance" namespace="/admin">Appearance</my:currentWWUrl>
</li>
+ </redback:ifAuthorized>
+ <redback:ifAuthorized permission="archiva-upload-repository">
<li class="none">
<my:currentWWUrl action="upload" namespace="/">Upload Artifact</my:currentWWUrl>
</li>
return false;
}
+ public List<String> getManagableRepositoryIds( String principal )
+ throws PrincipalNotFoundException, AccessDeniedException, ArchivaSecurityException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
}