summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java
diff options
context:
space:
mode:
authorSimon Rettberg2015-08-14 15:30:28 +0200
committerSimon Rettberg2015-08-14 15:30:28 +0200
commit20b9bfcd894a1f5ddb710884e40ce38736300a3d (patch)
tree2b85cef9e92b1fbca01dcfbd9a8b0d47d18b52a2 /dozentenmodulserver/src/main/java
parent[client] Layout; don't close lecture wizard if creation failed (diff)
downloadtutor-module-20b9bfcd894a1f5ddb710884e40ce38736300a3d.tar.gz
tutor-module-20b9bfcd894a1f5ddb710884e40ce38736300a3d.tar.xz
tutor-module-20b9bfcd894a1f5ddb710884e40ce38736300a3d.zip
[server] Return permissions for lectures, LectureRead changed
Diffstat (limited to 'dozentenmodulserver/src/main/java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java22
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java42
2 files changed, 42 insertions, 22 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
index 4ad815ec..cbc4c690 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
@@ -159,6 +159,7 @@ public class DbLecture {
lecture.setHasInternetAccess(rs.getBoolean("hasinternetaccess"));
lecture.setDefaultPermissions(DbLecturePermissions.fromResultSetDefault(rs));
lecture.setUserPermissions(DbLecturePermissions.fromResultSetUser(rs));
+ User.setCombinedUserPermissions(lecture, user);
return lecture;
} catch (SQLException e) {
LOGGER.error("Query failed in DbLecture.getLectureSummary()", e);
@@ -202,6 +203,7 @@ public class DbLecture {
lecture.setDefaultPermissions(DbLecturePermissions.fromResultSetDefault(rs));
lecture.setUserPermissions(DbLecturePermissions.fromResultSetUser(rs));
lecture.setIsImageVersionUsable(rs.getBoolean("imgvalid"));
+ User.setCombinedUserPermissions(lecture, user);
list.add(lecture);
}
return list;
@@ -227,11 +229,12 @@ public class DbLecture {
TNotFoundException {
try (MysqlConnection connection = Database.getConnection()) {
MysqlStatement stmt = connection.prepareStatement("SELECT"
- + " l.lectureid, l.displayname AS lecturename, l.description, l.imageversionid, l.autoupdate,"
- + " l.isenabled, l.starttime, l.endtime, l.lastused, l.usecount, l.createtime, l.updatetime,"
- + " l.ownerid, l.updaterid, l.runscript, l.nics, l.netrules, l.isexam, l.hasinternetaccess,"
- + " l.caneditdefault, l.canadmindefault, p.canedit, p.canadmin"
+ + " l.lectureid, l.displayname AS lecturename, l.description, l.imageversionid, i.imagebaseid,"
+ + " l.autoupdate, l.isenabled, l.starttime, l.endtime, l.lastused, l.usecount, l.createtime,"
+ + " l.updatetime, l.ownerid, l.updaterid, l.runscript, l.nics, l.netrules, l.isexam,"
+ + " l.hasinternetaccess, l.caneditdefault, l.canadmindefault, p.canedit, p.canadmin"
+ " FROM lecture l "
+ + " INNER JOIN imageversion i USING (imageversionid)"
+ " LEFT JOIN lecturepermission p ON (l.lectureid = p.lectureid AND p.userid = :userid)"
+ " WHERE l.lectureid = :lectureid LIMIT 1");
stmt.setString("userid", user.userId);
@@ -242,6 +245,8 @@ public class DbLecture {
LectureRead lecture = new LectureRead();
lecture.setLectureId(rs.getString("lectureid"));
lecture.setLectureName(rs.getString("lecturename"));
+ lecture.setImageBaseId(rs.getString("imagebaseid"));
+ lecture.setImageVersionId(rs.getString("imageversionid"));
lecture.setDescription(rs.getString("description"));
lecture.setAutoUpdate(rs.getBoolean("autoupdate"));
lecture.setIsEnabled(rs.getBoolean("isenabled"));
@@ -265,9 +270,10 @@ public class DbLecture {
LOGGER.warn("Could not deserialize netrules for lecture " + lectureId, e);
}
}
- lecture.setImage(DbImage.getImageSummary(connection, user,
- DbImage.getBaseIdForVersionId(connection, rs.getString("imageversionid"))));
lecture.setAllowedUsers(getAllowedUsers(connection, lectureId));
+ lecture.setDefaultPermissions(DbLecturePermissions.fromResultSetDefault(rs));
+ lecture.setUserPermissions(DbLecturePermissions.fromResultSetUser(rs));
+ User.setCombinedUserPermissions(lecture, user);
return lecture;
} catch (SQLException e) {
LOGGER.error("Query failed in DbLecture.getLectureDetails()", e);
@@ -318,8 +324,8 @@ public class DbLecture {
* Called when an image version is deleted or marked for deletion, so that
* linking lectures switch over to other available versions.
*/
- protected static void autoSwitchUsedImage(MysqlConnection connection, ImageVersionDetails oldVersion, ImageVersionDetails newVersion)
- throws TNotFoundException, SQLException {
+ protected static void autoSwitchUsedImage(MysqlConnection connection, ImageVersionDetails oldVersion,
+ ImageVersionDetails newVersion) throws TNotFoundException, SQLException {
// First, get list of lectures using the image version to switch away to
List<String> lectures = getAllUsingImageVersion(connection, oldVersion.versionId);
if (lectures.isEmpty())
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 187695b4..41d790bc 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
@@ -309,6 +309,34 @@ public class User {
image.defaultPermissions);
}
+ public static void setCombinedUserPermissions(LectureRead lecture, UserInfo user) {
+ if (user == null || user.role == Role.STUDENT) {
+ lecture.userPermissions = lectureNothing;
+ return;
+ }
+ if (hasAllLecturePermissions(user, lecture.ownerId)) {
+ lecture.userPermissions = lectureSu;
+ return;
+ }
+ if (lecture.userPermissions == null) {
+ lecture.userPermissions = lecture.defaultPermissions;
+ }
+ }
+
+ public static void setCombinedUserPermissions(LectureSummary lecture, UserInfo user) {
+ if (user == null || user.role == Role.STUDENT) {
+ lecture.userPermissions = lectureNothing;
+ return;
+ }
+ if (hasAllLecturePermissions(user, lecture.ownerId)) {
+ lecture.userPermissions = lectureSu;
+ return;
+ }
+ if (lecture.userPermissions == null) {
+ lecture.userPermissions = lecture.defaultPermissions;
+ }
+ }
+
private static boolean hasAllImagePermissions(UserInfo user, String imageOwnerId) {
if (user != null && user.role == Role.TUTOR) {
// Check for owner
@@ -343,20 +371,6 @@ public class User {
return userPerms;
}
- public static void setCombinedUserPermissions(LectureRead lecture, UserInfo user) {
- if (user == null || user.role == Role.STUDENT) {
- lecture.userPermissions = lectureNothing;
- return;
- }
- if (hasAllLecturePermissions(user, lecture.ownerId)) {
- lecture.userPermissions = lectureSu;
- return;
- }
- if (lecture.userPermissions == null) {
- lecture.userPermissions = lecture.defaultPermissions;
- }
- }
-
private static boolean hasAllLecturePermissions(UserInfo user, String lectureOwnerId) {
if (user != null && user.role == Role.TUTOR) {
// Check for owner