Add permission checks

This commit is contained in:
Rene Pfeuffer
2019-10-19 13:54:27 +02:00
parent 2a998060f4
commit 9f6674cce4
3 changed files with 11 additions and 6 deletions

View File

@@ -79,7 +79,7 @@ public class LFSAuthCommand implements CommandInterpreterFactory {
Repository repository = repositoryContext.getRepository();
String url = format(LFS_INFO_URL_PATTERN, baseUrl, repository.getNamespace(), repository.getName());
AccessToken accessToken = tokenFactory.getReadAccessToken(repository);
AccessToken accessToken = tokenFactory.createReadAccessToken(repository);
return new ExpiringAction(url, accessToken);
}

View File

@@ -18,14 +18,19 @@ public class LfsAccessTokenFactory {
this.tokenBuilderFactory = tokenBuilderFactory;
}
AccessToken getReadAccessToken(Repository repository) {
AccessToken createReadAccessToken(Repository repository) {
RepositoryPermissions.pull(repository).check();
RepositoryPermissions.read(repository).check();
return createToken(
Scope.valueOf(
RepositoryPermissions.read(repository).asShiroString(),
RepositoryPermissions.pull(repository).asShiroString()));
}
AccessToken getWriteAccessToken(Repository repository) {
AccessToken createWriteAccessToken(Repository repository) {
RepositoryPermissions.read(repository).check();
RepositoryPermissions.pull(repository).check();
RepositoryPermissions.push(repository).check();
return createToken(
Scope.valueOf(
RepositoryPermissions.read(repository).asShiroString(),
@@ -36,7 +41,7 @@ public class LfsAccessTokenFactory {
private AccessToken createToken(Scope scope) {
return tokenBuilderFactory
.create()
.expiresIn(5, TimeUnit.MINUTES)
.expiresIn(1, TimeUnit.MINUTES)
.scope(scope)
.build();
}

View File

@@ -54,7 +54,7 @@ public class ScmBlobLfsRepository implements LargeFileRepository {
@Override
public Response.Action getDownloadAction(AnyLongObjectId id) {
if (accessToken == null) {
accessToken = tokenFactory.getReadAccessToken(repository);
accessToken = tokenFactory.createReadAccessToken(repository);
}
return getAction(id, accessToken);
}
@@ -62,7 +62,7 @@ public class ScmBlobLfsRepository implements LargeFileRepository {
@Override
public Response.Action getUploadAction(AnyLongObjectId id, long size) {
if (accessToken == null) {
accessToken = tokenFactory.getWriteAccessToken(repository);
accessToken = tokenFactory.createWriteAccessToken(repository);
}
return getAction(id, accessToken);
}