diff options
Diffstat (limited to 'dozentenmodulserver/src/main/java')
| -rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java | 22 | ||||
| -rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/permissions/User.java | 42 |
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 |
