mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 09:25:43 +01:00
Merged feature/changes_for_ssh_plugin into 2.0.0-m3
This commit is contained in:
@@ -77,15 +77,13 @@ public final class ScmState
|
||||
* @param repositoryTypes available repository types
|
||||
* @param defaultUserType default user type
|
||||
* @param clientConfig client configuration
|
||||
* @param assignedPermission assigned permissions
|
||||
* @param availablePermissions list of available permissions
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public ScmState(String version, User user, Collection<String> groups,
|
||||
String token, Collection<RepositoryType> repositoryTypes, String defaultUserType,
|
||||
ScmClientConfig clientConfig, List<String> assignedPermission,
|
||||
Collection<PermissionDescriptor> availablePermissions)
|
||||
ScmClientConfig clientConfig, Collection<PermissionDescriptor> availablePermissions)
|
||||
{
|
||||
this.version = version;
|
||||
this.user = user;
|
||||
@@ -94,24 +92,11 @@ public final class ScmState
|
||||
this.repositoryTypes = repositoryTypes;
|
||||
this.clientConfig = clientConfig;
|
||||
this.defaultUserType = defaultUserType;
|
||||
this.assignedPermissions = assignedPermission;
|
||||
this.availablePermissions = availablePermissions;
|
||||
}
|
||||
|
||||
//~--- get methods ----------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Return a list of assigned permissions.
|
||||
*
|
||||
*
|
||||
* @return list of assigned permissions
|
||||
* @since 1.31
|
||||
*/
|
||||
public List<String> getAssignedPermissions()
|
||||
{
|
||||
return assignedPermissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of available global permissions.
|
||||
*
|
||||
@@ -225,9 +210,6 @@ public final class ScmState
|
||||
/** authentication token */
|
||||
private String token;
|
||||
|
||||
/** Field description */
|
||||
private List<String> assignedPermissions;
|
||||
|
||||
/**
|
||||
* Avaliable global permission
|
||||
* @since 1.31
|
||||
|
||||
@@ -74,20 +74,17 @@ public final class ScmStateFactory
|
||||
* @param repositoryManger repository manager
|
||||
* @param userManager user manager
|
||||
* @param securitySystem security system
|
||||
* @param authorizationCollector authorization collector
|
||||
*/
|
||||
@Inject
|
||||
public ScmStateFactory(SCMContextProvider contextProvider,
|
||||
ScmConfiguration configuration, RepositoryManager repositoryManger,
|
||||
UserManager userManager, SecuritySystem securitySystem,
|
||||
AuthorizationCollector authorizationCollector)
|
||||
UserManager userManager, SecuritySystem securitySystem)
|
||||
{
|
||||
this.contextProvider = contextProvider;
|
||||
this.configuration = configuration;
|
||||
this.repositoryManger = repositoryManger;
|
||||
this.userManager = userManager;
|
||||
this.securitySystem = securitySystem;
|
||||
this.authorizationCollector = authorizationCollector;
|
||||
}
|
||||
|
||||
//~--- methods --------------------------------------------------------------
|
||||
@@ -101,8 +98,7 @@ public final class ScmStateFactory
|
||||
@SuppressWarnings("unchecked")
|
||||
public ScmState createAnonymousState()
|
||||
{
|
||||
return createState(SCMContext.ANONYMOUS, Collections.EMPTY_LIST, null,
|
||||
Collections.EMPTY_LIST, Collections.EMPTY_LIST);
|
||||
return createState(SCMContext.ANONYMOUS, Collections.EMPTY_LIST, null, Collections.EMPTY_LIST);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,15 +137,11 @@ public final class ScmStateFactory
|
||||
ap = securitySystem.getAvailablePermissions();
|
||||
}
|
||||
|
||||
List<String> permissions =
|
||||
ImmutableList.copyOf(
|
||||
authorizationCollector.collect().getStringPermissions());
|
||||
|
||||
return createState(user, groups.getCollection(), token, permissions, ap);
|
||||
return createState(user, groups.getCollection(), token, ap);
|
||||
}
|
||||
|
||||
private ScmState createState(User user, Collection<String> groups,
|
||||
String token, List<String> assignedPermissions,
|
||||
String token,
|
||||
Collection<PermissionDescriptor> availablePermissions)
|
||||
{
|
||||
User u = user.clone();
|
||||
@@ -159,15 +151,11 @@ public final class ScmStateFactory
|
||||
|
||||
return new ScmState(contextProvider.getVersion(), u, groups, token,
|
||||
repositoryManger.getConfiguredTypes(), userManager.getDefaultType(),
|
||||
new ScmClientConfig(configuration), assignedPermissions,
|
||||
availablePermissions);
|
||||
new ScmClientConfig(configuration), availablePermissions);
|
||||
}
|
||||
|
||||
//~--- fields ---------------------------------------------------------------
|
||||
|
||||
/** authorization collector */
|
||||
private final AuthorizationCollector authorizationCollector;
|
||||
|
||||
/** configuration */
|
||||
private final ScmConfiguration configuration;
|
||||
|
||||
|
||||
@@ -3,10 +3,29 @@ package sonia.scm.repository.api;
|
||||
import sonia.scm.plugin.ExtensionPoint;
|
||||
import sonia.scm.repository.Repository;
|
||||
|
||||
/**
|
||||
* Provider for scm native protocols.
|
||||
*
|
||||
* @param <T> type of protocol
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@ExtensionPoint(multi = true)
|
||||
public interface ScmProtocolProvider<T extends ScmProtocol> {
|
||||
|
||||
/**
|
||||
* Returns type of repository (e.g.: git, svn, hg, etc.)
|
||||
*
|
||||
* @return name of type
|
||||
*/
|
||||
String getType();
|
||||
|
||||
/**
|
||||
* Returns protocol for the given repository.
|
||||
*
|
||||
* @param repository repository
|
||||
*
|
||||
* @return protocol for repository
|
||||
*/
|
||||
T get(Repository repository);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ package sonia.scm.security;
|
||||
//~--- non-JDK imports --------------------------------------------------------
|
||||
|
||||
import org.apache.shiro.authz.AuthorizationInfo;
|
||||
import org.apache.shiro.subject.PrincipalCollection;
|
||||
import sonia.scm.plugin.ExtensionPoint;
|
||||
|
||||
/**
|
||||
@@ -42,15 +43,16 @@ import sonia.scm.plugin.ExtensionPoint;
|
||||
* @author Sebastian Sdorra
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@ExtensionPoint(multi = false)
|
||||
@ExtensionPoint
|
||||
public interface AuthorizationCollector
|
||||
{
|
||||
|
||||
/**
|
||||
* Returns {@link AuthorizationInfo} for the authenticated user.
|
||||
*
|
||||
* @param principalCollection collected principals
|
||||
*
|
||||
* @return {@link AuthorizationInfo} for authenticated user
|
||||
*/
|
||||
public AuthorizationInfo collect();
|
||||
AuthorizationInfo collect(PrincipalCollection principalCollection);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user