summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-19 18:07:41 +0200
committerSimon Rettberg2015-06-19 18:07:41 +0200
commit3fba1e1e9d046598683a790074ee183c0f1176e6 (patch)
tree073b1df936d4252e0bdefd7bd085f43ffe32fbad /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions
parent[server] Implemented getUsers call, more permission checking methods (diff)
downloadtutor-module-3fba1e1e9d046598683a790074ee183c0f1176e6.tar.gz
tutor-module-3fba1e1e9d046598683a790074ee183c0f1176e6.tar.xz
tutor-module-3fba1e1e9d046598683a790074ee183c0f1176e6.zip
Add flag to lecture that decides whether the lecture will automatically link to a new image version when one is uploaded; implement some more functionality
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java74
1 files changed, 62 insertions, 12 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java
index 1a22d074..51041df9 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java
@@ -6,6 +6,7 @@ import org.openslx.bwlp.sat.database.mappers.DbImage;
import org.openslx.bwlp.thrift.iface.AuthorizationError;
import org.openslx.bwlp.thrift.iface.ImagePermissions;
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
+import org.openslx.bwlp.thrift.iface.Role;
import org.openslx.bwlp.thrift.iface.TAuthorizationException;
import org.openslx.bwlp.thrift.iface.TInternalServerError;
import org.openslx.bwlp.thrift.iface.TNotFoundException;
@@ -38,10 +39,10 @@ public class User {
}
public static boolean isSuperUser(UserInfo ui) {
- // TODO: for superuser override
+ // TODO: for superuser override, read from DB
return false;
}
-
+
/**
* Check if the given user has the given permission for the image identified
* by the given image base id.
@@ -49,19 +50,36 @@ public class User {
* @param user
* @param imageBaseId
* @param permission
- * @throws TAuthorizationException
* @throws TInternalServerError
* @throws TNotFoundException
*/
- public static void hasImageBasePermissionOrFail(UserInfo user, String imageBaseId, Permission permission)
- throws TAuthorizationException, TInternalServerError, TNotFoundException {
+ public static boolean hasImageBasePermission(UserInfo user, String imageBaseId, Permission permission)
+ throws TInternalServerError, TNotFoundException {
ImageSummaryRead localImage;
try {
localImage = DbImage.getImageSummary(user, imageBaseId);
} catch (SQLException e) {
throw new TInternalServerError();
}
- if (!canActionImage(user, permission, localImage.userPermissions, localImage.defaultPermissions)) {
+ if (localImage.ownerId.equals(user.userId))
+ return true;
+ return canActionImage(user, permission, localImage.userPermissions, localImage.defaultPermissions);
+ }
+
+ /**
+ * Check if the given user has the given permission for the image identified
+ * by the given image base id.
+ *
+ * @param user
+ * @param imageBaseId
+ * @param permission
+ * @throws TAuthorizationException
+ * @throws TInternalServerError
+ * @throws TNotFoundException
+ */
+ public static void hasImageBasePermissionOrFail(UserInfo user, String imageBaseId, Permission permission)
+ throws TAuthorizationException, TInternalServerError, TNotFoundException {
+ if (!hasImageBasePermission(user, imageBaseId, permission)) {
throw new TAuthorizationException(AuthorizationError.NO_PERMISSION, "Required permission: "
+ permission.toString());
}
@@ -74,22 +92,54 @@ public class User {
* @param user
* @param imageVersionId
* @param permission
- * @throws TAuthorizationException
* @throws TInternalServerError
* @throws TNotFoundException
*/
- public static void hasImageVersionPermissionOrFail(UserInfo user, String imageVersionId,
- Permission permission) throws TAuthorizationException, TInternalServerError, TNotFoundException {
- ImageSummaryRead localImage;
+ public static boolean hasImageVersionPermission(UserInfo user, String imageVersionId,
+ Permission permission) throws TInternalServerError, TNotFoundException {
try {
- localImage = DbImage.getImageSummaryFromVersionId(user, imageVersionId);
+ String imageBaseId = DbImage.getBaseIdForVersionId(imageVersionId);
+ if (imageBaseId == null)
+ throw new TNotFoundException();
+ return hasImageBasePermission(user, imageBaseId, permission);
} catch (SQLException e) {
throw new TInternalServerError();
}
- if (!canActionImage(user, permission, localImage.userPermissions, localImage.defaultPermissions)) {
+ }
+
+ /**
+ * Check if the given user has the given permission for the image identified
+ * by the given image version id.
+ *
+ * @param user
+ * @param imageVersionId
+ * @param permission
+ * @throws TAuthorizationException
+ * @throws TInternalServerError
+ * @throws TNotFoundException
+ */
+ public static void hasImageVersionPermissionOrFail(UserInfo user, String imageVersionId,
+ Permission permission) throws TAuthorizationException, TInternalServerError, TNotFoundException {
+ if (!hasImageVersionPermission(user, imageVersionId, permission)) {
throw new TAuthorizationException(AuthorizationError.NO_PERMISSION, "Required permission: "
+ permission.toString());
}
}
+ /**
+ * Checks whether the given user is allowed to create new images.
+ *
+ * @param user {@link UserInfo} instance representing the user in question
+ * @return true or false
+ */
+ public static boolean canCreateImage(UserInfo user) {
+ return user.role == Role.TUTOR;
+ }
+
+ public static void canCreateImageOrFail(UserInfo user) throws TAuthorizationException {
+ if (!canCreateImage(user))
+ throw new TAuthorizationException(AuthorizationError.NO_PERMISSION,
+ "No permission to create new image");
+ }
+
}