diff --git a/src/main/java/de/thm/arsnova/controller/CourseController.java b/src/main/java/de/thm/arsnova/controller/CourseController.java index 74e6c51485c1599e32cefe6cab31ee4ff8044bce..7671b524f6a9b98d617d5bb9123b47c7c00a68aa 100644 --- a/src/main/java/de/thm/arsnova/controller/CourseController.java +++ b/src/main/java/de/thm/arsnova/controller/CourseController.java @@ -20,7 +20,7 @@ package de.thm.arsnova.controller; import de.thm.arsnova.connector.client.ConnectorClient; import de.thm.arsnova.connector.model.Course; import de.thm.arsnova.connector.model.UserRole; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.exceptions.NotImplementedException; import de.thm.arsnova.exceptions.UnauthorizedException; import de.thm.arsnova.services.UserService; @@ -54,7 +54,7 @@ public class CourseController extends AbstractController { @RequestParam(value = "sortby", defaultValue = "name") final String sortby ) { - final User currentUser = userService.getCurrentUser(); + final UserAuthentication currentUser = userService.getCurrentUser(); if (currentUser == null || currentUser.getUsername() == null) { throw new UnauthorizedException(); diff --git a/src/main/java/de/thm/arsnova/controller/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/FeedbackController.java index 0d6c54d3d52bd82bb0c9ab18902d113498dcfefe..b5b29c47596ccb8088fbfb228187ba0b5f1ee203 100644 --- a/src/main/java/de/thm/arsnova/controller/FeedbackController.java +++ b/src/main/java/de/thm/arsnova/controller/FeedbackController.java @@ -18,7 +18,7 @@ package de.thm.arsnova.controller; import de.thm.arsnova.entities.Feedback; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.services.FeedbackService; import de.thm.arsnova.services.UserService; @@ -94,7 +94,7 @@ public class FeedbackController extends AbstractController { @PathVariable final String sessionkey, @RequestBody final int value ) { - User user = userService.getCurrentUser(); + UserAuthentication user = userService.getCurrentUser(); feedbackService.save(sessionkey, value, user); Feedback feedback = feedbackService.getBySessionKey(sessionkey); diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java index e4ef20e08a024640e6bf6413d8264f85737fd406..36525fa28f2f8ddd8d82b70c73604fae7f1d08d3 100644 --- a/src/main/java/de/thm/arsnova/controller/LoginController.java +++ b/src/main/java/de/thm/arsnova/controller/LoginController.java @@ -18,8 +18,8 @@ package de.thm.arsnova.controller; import de.thm.arsnova.entities.ServiceDescription; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import de.thm.arsnova.exceptions.UnauthorizedException; import de.thm.arsnova.services.UserService; import de.thm.arsnova.services.UserSessionService; @@ -304,7 +304,7 @@ public class LoginController extends AbstractController { @RequestMapping(value = { "/auth/", "/whoami" }, method = RequestMethod.GET) @ResponseBody - public User whoami() { + public UserAuthentication whoami() { userSessionService.setUser(userService.getCurrentUser()); return userService.getCurrentUser(); } @@ -431,8 +431,8 @@ public class LoginController extends AbstractController { @RequestMapping(value = { "/test/me" }, method = RequestMethod.GET) @ResponseBody - public User me() { - final User me = userSessionService.getUser(); + public UserAuthentication me() { + final UserAuthentication me = userSessionService.getUser(); if (me == null) { throw new UnauthorizedException(); } diff --git a/src/main/java/de/thm/arsnova/controller/MotdController.java b/src/main/java/de/thm/arsnova/controller/MotdController.java index e9a19f58eb6950e591218e0a318219f74d68e060..293080f42b392e17922fd82ed676ce908ef81884 100644 --- a/src/main/java/de/thm/arsnova/controller/MotdController.java +++ b/src/main/java/de/thm/arsnova/controller/MotdController.java @@ -18,7 +18,7 @@ package de.thm.arsnova.controller; import de.thm.arsnova.entities.Motd; -import de.thm.arsnova.entities.MotdList; +import de.thm.arsnova.entities.migration.v2.MotdList; import de.thm.arsnova.services.MotdService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; diff --git a/src/main/java/de/thm/arsnova/controller/SocketController.java b/src/main/java/de/thm/arsnova/controller/SocketController.java index 0fa66e39a45f072029716738f7a39ecd64ff461f..66fc3c12e629e5aab28337d4c23f5a340619bf99 100644 --- a/src/main/java/de/thm/arsnova/controller/SocketController.java +++ b/src/main/java/de/thm/arsnova/controller/SocketController.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.controller; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.services.UserService; import de.thm.arsnova.services.UserSessionService; import de.thm.arsnova.websocket.ArsnovaSocketioServer; @@ -74,7 +74,7 @@ public class SocketController extends AbstractController { response.setStatus(HttpStatus.BAD_REQUEST.value()); return; } - User u = userService.getCurrentUser(); + UserAuthentication u = userService.getCurrentUser(); if (null == u) { logger.debug("Client {} requested to assign Websocket session but has not authenticated.", socketid); response.setStatus(HttpStatus.FORBIDDEN.value()); diff --git a/src/main/java/de/thm/arsnova/controller/UserController.java b/src/main/java/de/thm/arsnova/controller/UserController.java index c0fa9eade8ce87531aaaa28e67eefb0e7781df92..ae03cd099223a5ef0c36f15d8c8be615238bb9c3 100644 --- a/src/main/java/de/thm/arsnova/controller/UserController.java +++ b/src/main/java/de/thm/arsnova/controller/UserController.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.controller; -import de.thm.arsnova.entities.DbUser; +import de.thm.arsnova.entities.migration.v2.DbUser; import de.thm.arsnova.services.UserService; import de.thm.arsnova.services.UserSessionService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/src/main/java/de/thm/arsnova/entities/User.java b/src/main/java/de/thm/arsnova/entities/UserAuthentication.java similarity index 82% rename from src/main/java/de/thm/arsnova/entities/User.java rename to src/main/java/de/thm/arsnova/entities/UserAuthentication.java index cbd822c1792ea338396ea68eed25a83380b9b731..b8e52dc439d6596b7d0ee0df1e12f29ace66fe13 100644 --- a/src/main/java/de/thm/arsnova/entities/User.java +++ b/src/main/java/de/thm/arsnova/entities/UserAuthentication.java @@ -32,7 +32,7 @@ import java.io.Serializable; /** * Represents a user. */ -public class User implements Serializable { +public class UserAuthentication implements Serializable { public static final String GOOGLE = "google"; public static final String TWITTER = "twitter"; public static final String FACEBOOK = "facebook"; @@ -48,32 +48,32 @@ public class User implements Serializable { private UserSessionService.Role role; private boolean isAdmin; - public User(Google2Profile profile) { + public UserAuthentication(Google2Profile profile) { setUsername(profile.getEmail()); - setType(User.GOOGLE); + setType(UserAuthentication.GOOGLE); } - public User(TwitterProfile profile) { + public UserAuthentication(TwitterProfile profile) { setUsername(profile.getUsername()); - setType(User.TWITTER); + setType(UserAuthentication.TWITTER); } - public User(FacebookProfile profile) { + public UserAuthentication(FacebookProfile profile) { setUsername(profile.getProfileUrl().toString()); - setType(User.FACEBOOK); + setType(UserAuthentication.FACEBOOK); } - public User(AttributePrincipal principal) { + public UserAuthentication(AttributePrincipal principal) { setUsername(principal.getName()); - setType(User.THM); + setType(UserAuthentication.THM); } - public User(AnonymousAuthenticationToken token) { - setUsername(User.ANONYMOUS); - setType(User.ANONYMOUS); + public UserAuthentication(AnonymousAuthenticationToken token) { + setUsername(UserAuthentication.ANONYMOUS); + setType(UserAuthentication.ANONYMOUS); } - public User(UsernamePasswordAuthenticationToken token) { + public UserAuthentication(UsernamePasswordAuthenticationToken token) { setUsername(token.getName()); setType(LDAP); } @@ -138,7 +138,7 @@ public class User implements Serializable { if (obj == null || !obj.getClass().equals(this.getClass())) { return false; } - User other = (User) obj; + UserAuthentication other = (UserAuthentication) obj; return this.username.equals(other.username) && this.type.equals(other.type); } diff --git a/src/main/java/de/thm/arsnova/entities/UserProfile.java b/src/main/java/de/thm/arsnova/entities/UserProfile.java new file mode 100644 index 0000000000000000000000000000000000000000..8a9ae428909832160e9fb4edafca5346a8c5cedf --- /dev/null +++ b/src/main/java/de/thm/arsnova/entities/UserProfile.java @@ -0,0 +1,192 @@ +package de.thm.arsnova.entities; + +import com.fasterxml.jackson.annotation.JsonView; +import de.thm.arsnova.entities.serialization.View; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class UserProfile implements Entity { + public class Account { + private String password; + private String activationKey; + private String passwordResetKey; + private long passwordResetTime; + + @JsonView(View.Persistence.class) + public String getPassword() { + return password; + } + + @JsonView(View.Persistence.class) + public void setPassword(String password) { + this.password = password; + } + + @JsonView(View.Persistence.class) + public String getActivationKey() { + return activationKey; + } + + @JsonView(View.Persistence.class) + public void setActivationKey(String activationKey) { + this.activationKey = activationKey; + } + + @JsonView(View.Persistence.class) + public String getPasswordResetKey() { + return passwordResetKey; + } + + @JsonView(View.Persistence.class) + public void setPasswordResetKey(String passwordResetKey) { + this.passwordResetKey = passwordResetKey; + } + + @JsonView(View.Persistence.class) + public long getPasswordResetTime() { + return passwordResetTime; + } + + @JsonView(View.Persistence.class) + public void setPasswordResetTime(long passwordResetTime) { + this.passwordResetTime = passwordResetTime; + } + } + + public class SessionHistoryEntry { + private String sessionId; + private long lastVisit; + + public SessionHistoryEntry() { + + } + + public SessionHistoryEntry(String sessionId, long lastVisit) { + this.sessionId = sessionId; + this.lastVisit = lastVisit; + } + + public String getSessionId() { + return sessionId; + } + + public void setSessionId(String sessionId) { + this.sessionId = sessionId; + } + + public long getLastVisit() { + return lastVisit; + } + + public void setLastVisit(long lastVisit) { + this.lastVisit = lastVisit; + } + } + + private String id; + private String rev; + private String authProvider; + private String loginId; + private long creation; + private long lastLogin; + private Account account; + private List<SessionHistoryEntry> sessionHistory = new ArrayList<>(); + private Set<String> acknowledgedMotds = new HashSet<>(); + + @Override + @JsonView({View.Persistence.class, View.Public.class}) + public String getId() { + return id; + } + + @Override + @JsonView({View.Persistence.class, View.Public.class}) + public void setId(String id) { + this.id = id; + } + + @Override + @JsonView({View.Persistence.class, View.Public.class}) + public String getRevision() { + return rev; + } + + @Override + @JsonView({View.Persistence.class, View.Public.class}) + public void setRevision(String rev) { + this.rev = rev; + } + + @JsonView({View.Persistence.class, View.Public.class}) + public String getAuthProvider() { + return authProvider; + } + + @JsonView(View.Persistence.class) + public void setAuthProvider(String authProvider) { + this.authProvider = authProvider; + } + + @JsonView({View.Persistence.class, View.Public.class}) + public String getLoginId() { + return loginId; + } + + @JsonView(View.Persistence.class) + public void setLoginId(String loginId) { + this.loginId = loginId; + } + + @JsonView({View.Persistence.class, View.Public.class}) + public long getCreation() { + return creation; + } + + @JsonView(View.Persistence.class) + public void setCreation(long creation) { + this.creation = creation; + } + + @JsonView({View.Persistence.class, View.Public.class}) + public long getLastLogin() { + return lastLogin; + } + + @JsonView(View.Persistence.class) + public void setLastLogin(long lastLogin) { + this.lastLogin = lastLogin; + } + + @JsonView(View.Persistence.class) + public Account getAccount() { + return account; + } + + @JsonView(View.Persistence.class) + public void setAccount(Account account) { + this.account = account; + } + + @JsonView({View.Persistence.class, View.Public.class}) + public List<SessionHistoryEntry> getSessionHistory() { + return sessionHistory; + } + + @JsonView(View.Persistence.class) + public void setSessionHistory(List<SessionHistoryEntry> sessionHistory) { + this.sessionHistory = sessionHistory; + } + + @JsonView({View.Persistence.class, View.Public.class}) + public Set<String> getAcknowledgedMotds() { + return acknowledgedMotds; + } + + @JsonView(View.Persistence.class) + public void setAcknowledgedMotds(Set<String> acknowledgedMotds) { + this.acknowledgedMotds = acknowledgedMotds; + } +} diff --git a/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java b/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java index f12beab19a79c4b1a6f1fa127242c3ec64d1aa1a..f37fd437c7ac12f7346248e20350b83cdd30d56d 100644 --- a/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java +++ b/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java @@ -2,17 +2,22 @@ package de.thm.arsnova.entities.migration; import de.thm.arsnova.entities.ChoiceAnswer; import de.thm.arsnova.entities.ChoiceQuestionContent; -import de.thm.arsnova.entities.DbUser; import de.thm.arsnova.entities.Entity; import de.thm.arsnova.entities.TextAnswer; +import de.thm.arsnova.entities.UserProfile; import de.thm.arsnova.entities.migration.v2.Answer; import de.thm.arsnova.entities.migration.v2.AnswerOption; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.migration.v2.Content; +import de.thm.arsnova.entities.migration.v2.DbUser; +import de.thm.arsnova.entities.migration.v2.LoggedIn; +import de.thm.arsnova.entities.migration.v2.MotdList; import de.thm.arsnova.entities.migration.v2.Session; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; public class V2Migrator { private void copyCommonProperties(final Entity from, final Entity to) { @@ -20,6 +25,41 @@ public class V2Migrator { to.setRevision(from.getRevision()); } + public UserProfile migrate(final DbUser dbUser, final LoggedIn loggedIn, final MotdList motdList) { + if (dbUser != null && loggedIn != null && !loggedIn.getUser().equals(dbUser.getUsername())) { + throw new IllegalArgumentException("Username of loggedIn object does not match."); + } + if (dbUser != null && motdList != null && !motdList.getUsername().equals(dbUser.getUsername())) { + throw new IllegalArgumentException("Username of motdList object does not match."); + } + if (loggedIn != null && motdList != null && !loggedIn.getUser().equals(motdList.getUsername())) { + throw new IllegalArgumentException("Usernames of loggedIn and motdList objects do not match."); + } + final UserProfile profile = new UserProfile(); + if (dbUser != null) { + profile.setLoginId(dbUser.getUsername()); + UserProfile.Account account = profile.new Account(); + profile.setAccount(account); + account.setPassword(dbUser.getPassword()); + account.setActivationKey(dbUser.getActivationKey()); + account.setPasswordResetKey(dbUser.getPasswordResetKey()); + account.setPasswordResetTime(dbUser.getPasswordResetTime()); + } + if (loggedIn != null) { + profile.setLoginId(loggedIn.getUser()); + profile.setLastLogin(loggedIn.getTimestamp()); + List<UserProfile.SessionHistoryEntry> sessionHistory = loggedIn.getVisitedSessions().stream() + .map(entry -> profile.new SessionHistoryEntry(entry.getId(), 0)) + .collect(Collectors.toList()); + profile.setSessionHistory(sessionHistory); + } + if (motdList != null && motdList.getMotdkeys() != null) { + profile.setAcknowledgedMotds(Arrays.stream(motdList.getMotdkeys().split(",")).collect(Collectors.toSet())); + } + + return profile; + } + public de.thm.arsnova.entities.Session migrate(final Session from, final DbUser owner) { if (!owner.getUsername().equals(from.getCreator())) { throw new IllegalArgumentException("Username of owner object does not match session creator."); diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java b/src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java index f0ea862d6b376bce8629ff9103668243bd18558b..9dd6196ee0983898e9156c009670ed3b95045714 100644 --- a/src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java +++ b/src/main/java/de/thm/arsnova/entities/migration/v2/Comment.java @@ -19,7 +19,7 @@ package de.thm.arsnova.entities.migration.v2; import com.fasterxml.jackson.annotation.JsonView; import de.thm.arsnova.entities.Entity; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.serialization.View; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -128,7 +128,7 @@ public class Comment implements Entity { this.creator = creator; } - public boolean isCreator(User user) { + public boolean isCreator(UserAuthentication user) { return user.getUsername().equals(creator); } } diff --git a/src/main/java/de/thm/arsnova/entities/DbUser.java b/src/main/java/de/thm/arsnova/entities/migration/v2/DbUser.java similarity index 97% rename from src/main/java/de/thm/arsnova/entities/DbUser.java rename to src/main/java/de/thm/arsnova/entities/migration/v2/DbUser.java index ff2e99f15cedbbf2c28a769cdbcee97c106b3b4a..9aaa1040d6a077000e897929c068cdbeecd15585 100644 --- a/src/main/java/de/thm/arsnova/entities/DbUser.java +++ b/src/main/java/de/thm/arsnova/entities/migration/v2/DbUser.java @@ -15,9 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package de.thm.arsnova.entities; +package de.thm.arsnova.entities.migration.v2; import com.fasterxml.jackson.annotation.JsonView; +import de.thm.arsnova.entities.Entity; import de.thm.arsnova.entities.serialization.View; /** diff --git a/src/main/java/de/thm/arsnova/entities/LoggedIn.java b/src/main/java/de/thm/arsnova/entities/migration/v2/LoggedIn.java similarity index 95% rename from src/main/java/de/thm/arsnova/entities/LoggedIn.java rename to src/main/java/de/thm/arsnova/entities/migration/v2/LoggedIn.java index 49da62667849c6bfa010f033507b115f69ce176b..1345f76bd413f0cb2bed4786ae0e8003bd37bf9b 100644 --- a/src/main/java/de/thm/arsnova/entities/LoggedIn.java +++ b/src/main/java/de/thm/arsnova/entities/migration/v2/LoggedIn.java @@ -15,10 +15,12 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package de.thm.arsnova.entities; +package de.thm.arsnova.entities.migration.v2; import com.fasterxml.jackson.annotation.JsonView; +import de.thm.arsnova.entities.Entity; import de.thm.arsnova.entities.migration.v2.Session; +import de.thm.arsnova.entities.migration.v2.VisitedSession; import de.thm.arsnova.entities.serialization.View; import java.util.ArrayList; diff --git a/src/main/java/de/thm/arsnova/entities/MotdList.java b/src/main/java/de/thm/arsnova/entities/migration/v2/MotdList.java similarity index 96% rename from src/main/java/de/thm/arsnova/entities/MotdList.java rename to src/main/java/de/thm/arsnova/entities/migration/v2/MotdList.java index 35b611fee0c03f8f62f5201d982b5cf645ae08ac..af766875a13816a357ca81933ed7c6c4b1f20778 100644 --- a/src/main/java/de/thm/arsnova/entities/MotdList.java +++ b/src/main/java/de/thm/arsnova/entities/migration/v2/MotdList.java @@ -15,9 +15,10 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package de.thm.arsnova.entities; +package de.thm.arsnova.entities.migration.v2; import com.fasterxml.jackson.annotation.JsonView; +import de.thm.arsnova.entities.Entity; import de.thm.arsnova.entities.serialization.View; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java b/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java index 13e6191f51b1134865000522fbbc69a46599893f..fe0ef8858a7c78a0fc6b09a57b783abc0c21518c 100644 --- a/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java +++ b/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java @@ -21,7 +21,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonView; import de.thm.arsnova.entities.Entity; import de.thm.arsnova.entities.ScoreOptions; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.serialization.View; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -144,7 +144,7 @@ public class Session implements Entity { this.lastOwnerActivity = lastOwnerActivity; } - public boolean isCreator(final User user) { + public boolean isCreator(final UserAuthentication user) { return user.getUsername().equals(creator); } diff --git a/src/main/java/de/thm/arsnova/entities/VisitedSession.java b/src/main/java/de/thm/arsnova/entities/migration/v2/VisitedSession.java similarity index 97% rename from src/main/java/de/thm/arsnova/entities/VisitedSession.java rename to src/main/java/de/thm/arsnova/entities/migration/v2/VisitedSession.java index dd61538ba7835e307cf5fe6aadf85540f1b1b207..c5626a4f5d2da315b37c4654c42500ce6eef4a87 100644 --- a/src/main/java/de/thm/arsnova/entities/VisitedSession.java +++ b/src/main/java/de/thm/arsnova/entities/migration/v2/VisitedSession.java @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -package de.thm.arsnova.entities; +package de.thm.arsnova.entities.migration.v2; import com.fasterxml.jackson.annotation.JsonView; import de.thm.arsnova.entities.migration.v2.Session; diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java index f461eb88ad01e5d08fed8ebb6b6aa9bba0d48494..05ce07348e165cf02f226bf036b160af826c41bd 100644 --- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java +++ b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java @@ -22,12 +22,12 @@ import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.databind.util.Converter; import de.thm.arsnova.entities.migration.v2.Answer; import de.thm.arsnova.entities.migration.v2.Comment; -import de.thm.arsnova.entities.DbUser; +import de.thm.arsnova.entities.migration.v2.DbUser; import de.thm.arsnova.entities.Entity; import de.thm.arsnova.entities.LogEntry; import de.thm.arsnova.entities.Motd; import de.thm.arsnova.entities.migration.v2.Content; -import de.thm.arsnova.entities.MotdList; +import de.thm.arsnova.entities.migration.v2.MotdList; import de.thm.arsnova.entities.migration.v2.Session; import java.util.HashMap; diff --git a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java b/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java index 9a1e30d28f727073f66988f0650b1a3fc6984b53..ad004160ec017fcb85535599eed43920721b8c4c 100644 --- a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java +++ b/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java @@ -17,10 +17,10 @@ */ package de.thm.arsnova.entities.transport; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Answer; import de.thm.arsnova.entities.migration.v2.Content; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; /** * An answer that is about to get saved in the database. Answers are not saved immediately, they are instead stored @@ -34,9 +34,9 @@ public class AnswerQueueElement { private final Answer answer; - private final User user; + private final UserAuthentication user; - public AnswerQueueElement(Session session, Content content, Answer answer, User user) { + public AnswerQueueElement(Session session, Content content, Answer answer, UserAuthentication user) { this.session = session; this.content = content; this.answer = answer; @@ -55,7 +55,7 @@ public class AnswerQueueElement { return answer; } - public User getUser() { + public UserAuthentication getUser() { return user; } } diff --git a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java index 4cc735e2fddef39671598d346e1d5077bec8219f..552a6484534e68cb451e9c9f0cba045798e583f6 100644 --- a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java +++ b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java @@ -25,7 +25,7 @@ import de.thm.arsnova.entities.Motd; import de.thm.arsnova.entities.migration.v2.Session; import de.thm.arsnova.entities.migration.v2.SessionFeature; import de.thm.arsnova.entities.migration.v2.SessionInfo; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.serialization.View; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -134,7 +134,7 @@ public class ImportExportSession { questions.add(ieq); } - public Session generateSessionEntity(User user) { + public Session generateSessionEntity(UserAuthentication user) { final Session s = new Session(); // import fields s.setActive(session.isActive()); diff --git a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java b/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java index feb5aa8a8e32f31a6f15df8b326d0860c8579f91..f1e5f56944cc170f8aafbab595c9ba6dca0cbb9e 100644 --- a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java +++ b/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java @@ -17,8 +17,8 @@ */ package de.thm.arsnova.events; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import java.util.Set; @@ -31,9 +31,9 @@ public class DeleteFeedbackForSessionsEvent extends ArsnovaEvent { private final Set<Session> sessions; - private final User user; + private final UserAuthentication user; - public DeleteFeedbackForSessionsEvent(Object source, Set<Session> sessions, User user) { + public DeleteFeedbackForSessionsEvent(Object source, Set<Session> sessions, UserAuthentication user) { super(source); this.sessions = sessions; this.user = user; @@ -43,7 +43,7 @@ public class DeleteFeedbackForSessionsEvent extends ArsnovaEvent { return sessions; } - public User getUser() { + public UserAuthentication getUser() { return user; } diff --git a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java b/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java index 7ed4f893a89972cb74cea75eb67d2fc6c1f88f74..394fc2f92a429ce94a3de787a8569cf5eddf303d 100644 --- a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java +++ b/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java @@ -17,10 +17,10 @@ */ package de.thm.arsnova.events; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Answer; import de.thm.arsnova.entities.migration.v2.Content; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; /** * Fires whenever a new answer is added. @@ -31,11 +31,11 @@ public class NewAnswerEvent extends SessionEvent { private final Answer answer; - private final User user; + private final UserAuthentication user; private final Content content; - public NewAnswerEvent(Object source, Session session, Answer answer, User user, Content content) { + public NewAnswerEvent(Object source, Session session, Answer answer, UserAuthentication user, Content content) { super(source, session); this.answer = answer; this.user = user; @@ -51,7 +51,7 @@ public class NewAnswerEvent extends SessionEvent { return answer; } - public User getUser() { + public UserAuthentication getUser() { return user; } diff --git a/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java b/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java index 25fe43685e3e9d8b16bf1d9f3f46f2273d134822..8c7ff5319d70781992a038e6c220ba6e38bb08e7 100644 --- a/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java @@ -17,20 +17,20 @@ */ package de.thm.arsnova.persistance; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Answer; -import de.thm.arsnova.entities.User; import org.springframework.data.repository.CrudRepository; import java.util.List; public interface AnswerRepository extends CrudRepository<Answer, String> { - Answer findByQuestionIdUserPiRound(String questionId, User user, int piRound); + Answer findByQuestionIdUserPiRound(String questionId, UserAuthentication user, int piRound); List<Answer> findByContentIdPiRound(String contentId, int piRound); List<Answer> findByContentId(String contentId); int countByContentIdRound(String contentId, int round); int countByContentId(String contentId); List<Answer> findByContentId(String contentId, int start, int limit); - List<Answer> findByUserSessionId(User user, String sessionId); + List<Answer> findByUserSessionId(UserAuthentication user, String sessionId); int countBySessionKey(String sessionKey); int deleteByContentId(String contentId); int countBySessionIdLectureVariant(String sessionId); diff --git a/src/main/java/de/thm/arsnova/persistance/CommentRepository.java b/src/main/java/de/thm/arsnova/persistance/CommentRepository.java index 8efb72401582c050da3c1ece09678dfa4986bcca..228f50d3b9a4bb67d3941738e63ad1dddac25bb1 100644 --- a/src/main/java/de/thm/arsnova/persistance/CommentRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/CommentRepository.java @@ -1,8 +1,8 @@ package de.thm.arsnova.persistance; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.migration.v2.CommentReadingCount; -import de.thm.arsnova.entities.User; import org.springframework.data.repository.CrudRepository; import java.util.List; @@ -10,10 +10,10 @@ import java.util.List; public interface CommentRepository extends CrudRepository<Comment, String> { int countBySessionId(String sessionKey); CommentReadingCount countReadingBySessionId(String sessionId); - CommentReadingCount countReadingBySessionIdAndUser(String sessionId, User user); + CommentReadingCount countReadingBySessionIdAndUser(String sessionId, UserAuthentication user); List<Comment> findBySessionId(String sessionId, int start, int limit); - List<Comment> findBySessionIdAndUser(String sessionId, User user, int start, int limit); + List<Comment> findBySessionIdAndUser(String sessionId, UserAuthentication user, int start, int limit); Comment findOne(String commentId); int deleteBySessionId(String sessionId); - int deleteBySessionIdAndUser(String sessionId, User user); + int deleteBySessionIdAndUser(String sessionId, UserAuthentication user); } diff --git a/src/main/java/de/thm/arsnova/persistance/ContentRepository.java b/src/main/java/de/thm/arsnova/persistance/ContentRepository.java index 5e0113d1e5dcb909287e3692605cce7433d66623..e4363c34bd76ae1dcb08110946ed18ebc04a141e 100644 --- a/src/main/java/de/thm/arsnova/persistance/ContentRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/ContentRepository.java @@ -1,7 +1,7 @@ package de.thm.arsnova.persistance; import de.thm.arsnova.entities.migration.v2.Content; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import org.springframework.data.repository.CrudRepository; import java.util.List; @@ -14,7 +14,7 @@ public interface ContentRepository extends CrudRepository<Content, String> { List<String> findIdsBySessionId(String sessionId); List<String> findIdsBySessionIdAndVariant(String sessionId, String variant); int deleteBySessionId(String sessionId); - List<String> findUnansweredIdsBySessionIdAndUser(String sessionId, User user); + List<String> findUnansweredIdsBySessionIdAndUser(String sessionId, UserAuthentication user); List<Content> findBySessionIdOnlyLectureVariantAndActive(String sessionId); List<Content> findBySessionIdOnlyLectureVariant(String sessionId); List<Content> findBySessionIdOnlyFlashcardVariantAndActive(String sessionId); @@ -27,6 +27,6 @@ public interface ContentRepository extends CrudRepository<Content, String> { int countPreparationVariantBySessionId(String sessionId); List<String> findIdsBySessionIdAndVariantAndSubject(String sessionId, String questionVariant, String subject); List<String> findSubjectsBySessionIdAndVariant(String sessionId, String questionVariant); - List<String> findUnansweredIdsBySessionIdAndUserOnlyLectureVariant(String sessionId, User user); - List<String> findUnansweredIdsBySessionIdAndUserOnlyPreparationVariant(String sessionId, User user); + List<String> findUnansweredIdsBySessionIdAndUserOnlyLectureVariant(String sessionId, UserAuthentication user); + List<String> findUnansweredIdsBySessionIdAndUserOnlyPreparationVariant(String sessionId, UserAuthentication user); } diff --git a/src/main/java/de/thm/arsnova/persistance/MotdListRepository.java b/src/main/java/de/thm/arsnova/persistance/MotdListRepository.java index 5b3a460f43216d8e8f70e9ac31160c59d41d3905..a407c7eccb875d5a30e4ee9397637494f84f5e79 100644 --- a/src/main/java/de/thm/arsnova/persistance/MotdListRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/MotdListRepository.java @@ -1,6 +1,6 @@ package de.thm.arsnova.persistance; -import de.thm.arsnova.entities.MotdList; +import de.thm.arsnova.entities.migration.v2.MotdList; public interface MotdListRepository { MotdList findByUsername(String username); diff --git a/src/main/java/de/thm/arsnova/persistance/SessionRepository.java b/src/main/java/de/thm/arsnova/persistance/SessionRepository.java index 5a1150ec7e44ca565b5650ba9f66ccde4b4440ca..b7a4888b2d595f53ce9b7a2f02826383a1e36867 100644 --- a/src/main/java/de/thm/arsnova/persistance/SessionRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/SessionRepository.java @@ -18,10 +18,10 @@ package de.thm.arsnova.persistance; import de.thm.arsnova.connector.model.Course; -import de.thm.arsnova.entities.LoggedIn; +import de.thm.arsnova.entities.migration.v2.LoggedIn; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; import de.thm.arsnova.entities.migration.v2.SessionInfo; -import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.transport.ImportExportSession; import org.springframework.data.repository.CrudRepository; @@ -30,17 +30,17 @@ import java.util.List; public interface SessionRepository extends CrudRepository<Session, String> { Session findByKeyword(String keyword); List<Session> findInactiveGuestSessionsMetadata(long lastActivityBefore); - List<Session> findByUser(User user, int start, int limit); + List<Session> findByUser(UserAuthentication user, int start, int limit); List<Session> findByUsername(String username, int start, int limit); List<Session> findAllForPublicPool(); - List<Session> findForPublicPoolByUser(User user); + List<Session> findForPublicPoolByUser(UserAuthentication user); List<Session> findVisitedByUsername(String username, int start, int limit); - List<SessionInfo> getMySessionsInfo(User user, int start, int limit); + List<SessionInfo> getMySessionsInfo(UserAuthentication user, int start, int limit); List<SessionInfo> findInfosForPublicPool(); - List<SessionInfo> findInfosForPublicPoolByUser(User user); - List<SessionInfo> findInfoForVisitedByUser(User currentUser, int start, int limit); + List<SessionInfo> findInfosForPublicPoolByUser(UserAuthentication user); + List<SessionInfo> findInfoForVisitedByUser(UserAuthentication currentUser, int start, int limit); List<Session> findSessionsByCourses(List<Course> courses); - SessionInfo importSession(User user, ImportExportSession importSession); + SessionInfo importSession(UserAuthentication user, ImportExportSession importSession); ImportExportSession exportSession(String sessionkey, Boolean withAnswer, Boolean withFeedbackQuestions); - LoggedIn registerAsOnlineUser(User user, Session session); + LoggedIn registerAsOnlineUser(UserAuthentication user, Session session); } diff --git a/src/main/java/de/thm/arsnova/persistance/UserRepository.java b/src/main/java/de/thm/arsnova/persistance/UserRepository.java index c4480fac964d8276101f82f0befade165478fcb8..8b9dde5ac496a8aae0d37a45daf39041c608a634 100644 --- a/src/main/java/de/thm/arsnova/persistance/UserRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/UserRepository.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.persistance; -import de.thm.arsnova.entities.DbUser; +import de.thm.arsnova.entities.migration.v2.DbUser; import org.springframework.data.repository.CrudRepository; public interface UserRepository extends CrudRepository<DbUser, String> { diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java index 6488e593157a3118763e8512e3f2c07c6dd72954..d63f4c066ac4aa6f891db16eb5b211d3ab190ab5 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java @@ -2,8 +2,8 @@ package de.thm.arsnova.persistance.couchdb; import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.Lists; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Answer; -import de.thm.arsnova.entities.User; import de.thm.arsnova.persistance.AnswerRepository; import de.thm.arsnova.persistance.LogEntryRepository; import org.ektorp.BulkDeleteDocument; @@ -70,7 +70,7 @@ public class CouchDbAnswerRepository extends CouchDbCrudRepository<Answer> imple } @Override - public Answer findByQuestionIdUserPiRound(final String contentId, final User user, final int piRound) { + public Answer findByQuestionIdUserPiRound(final String contentId, final UserAuthentication user, final int piRound) { final List<Answer> answerList = queryView("by_questionid_user_piround", ComplexKey.of(contentId, user.getUsername(), piRound)); return answerList.isEmpty() ? null : answerList.get(0); @@ -164,7 +164,7 @@ public class CouchDbAnswerRepository extends CouchDbCrudRepository<Answer> imple } @Override - public List<Answer> findByUserSessionId(final User user, final String sessionId) { + public List<Answer> findByUserSessionId(final UserAuthentication user, final String sessionId) { return queryView("by_user_sessionid", ComplexKey.of(user.getUsername(), sessionId)); } diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java index f8b878d79d2b3e55e29cc1f24e65902cb6bf35d1..3eb714da646229616fb5e27d2e34d4290ac7d4ea 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbCommentRepository.java @@ -1,9 +1,9 @@ package de.thm.arsnova.persistance.couchdb; import com.fasterxml.jackson.databind.JsonNode; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.migration.v2.CommentReadingCount; -import de.thm.arsnova.entities.User; import de.thm.arsnova.persistance.CommentRepository; import de.thm.arsnova.persistance.LogEntryRepository; import org.ektorp.ComplexKey; @@ -50,7 +50,7 @@ public class CouchDbCommentRepository extends CouchDbCrudRepository<Comment> imp } @Override - public CommentReadingCount countReadingBySessionIdAndUser(final String sessionId, final User user) { + public CommentReadingCount countReadingBySessionIdAndUser(final String sessionId, final UserAuthentication user) { final ViewResult result = db.queryView(createQuery("by_sessionid_creator_read") .startKey(ComplexKey.of(sessionId, user.getUsername())) .endKey(ComplexKey.of(sessionId, user.getUsername(), ComplexKey.emptyObject())) @@ -123,7 +123,7 @@ public class CouchDbCommentRepository extends CouchDbCrudRepository<Comment> imp } @Override - public List<Comment> findBySessionIdAndUser(final String sessionId, final User user, final int start, final int limit) { + public List<Comment> findBySessionIdAndUser(final String sessionId, final UserAuthentication user, final int start, final int limit) { final int qSkip = start > 0 ? start : -1; final int qLimit = limit > 0 ? limit : -1; @@ -150,7 +150,7 @@ public class CouchDbCommentRepository extends CouchDbCrudRepository<Comment> imp } @Override - public int deleteBySessionIdAndUser(final String sessionId, final User user) { + public int deleteBySessionIdAndUser(final String sessionId, final UserAuthentication user) { final ViewResult result = db.queryView(createQuery("by_sessionid_creator_read") .startKey(ComplexKey.of(sessionId, user.getUsername())) .endKey(ComplexKey.of(sessionId, user.getUsername(), ComplexKey.emptyObject()))); diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java index 85ae6921883006fd6031fb06933438e4f6a043ff..119a6b05c3e5c512c1ad839cec894c85b9011ed3 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbContentRepository.java @@ -1,7 +1,7 @@ package de.thm.arsnova.persistance.couchdb; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Content; -import de.thm.arsnova.entities.User; import de.thm.arsnova.persistance.ContentRepository; import de.thm.arsnova.persistance.LogEntryRepository; import org.ektorp.BulkDeleteDocument; @@ -90,7 +90,7 @@ public class CouchDbContentRepository extends CouchDbCrudRepository<Content> imp } @Override - public List<String> findUnansweredIdsBySessionIdAndUser(final String sessionId, final User user) { + public List<String> findUnansweredIdsBySessionIdAndUser(final String sessionId, final UserAuthentication user) { final ViewResult result = db.queryView(createQuery("questionid_by_user_sessionid_variant") .designDocId("_design/Answer") .startKey(ComplexKey.of(user.getUsername(), sessionId)) @@ -103,7 +103,7 @@ public class CouchDbContentRepository extends CouchDbCrudRepository<Content> imp } @Override - public List<String> findUnansweredIdsBySessionIdAndUserOnlyLectureVariant(final String sessionId, final User user) { + public List<String> findUnansweredIdsBySessionIdAndUserOnlyLectureVariant(final String sessionId, final UserAuthentication user) { final ViewResult result = db.queryView(createQuery("questionid_piround_by_user_sessionid_variant") .designDocId("_design/Answer") .key(ComplexKey.of(user.getUsername(), sessionId, "lecture"))); @@ -116,7 +116,7 @@ public class CouchDbContentRepository extends CouchDbCrudRepository<Content> imp } @Override - public List<String> findUnansweredIdsBySessionIdAndUserOnlyPreparationVariant(final String sessionId, final User user) { + public List<String> findUnansweredIdsBySessionIdAndUserOnlyPreparationVariant(final String sessionId, final UserAuthentication user) { final ViewResult result = db.queryView(createQuery("questionid_piround_by_user_sessionid_variant") .designDocId("_design/Answer") .key(ComplexKey.of(user.getUsername(), sessionId, "preparation"))); diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdListRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdListRepository.java index 499013a874871e16905241e0a9a296f3be4145c0..dcdb8ead1289b774f3f1b000575d20657b39c453 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdListRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbMotdListRepository.java @@ -1,6 +1,6 @@ package de.thm.arsnova.persistance.couchdb; -import de.thm.arsnova.entities.MotdList; +import de.thm.arsnova.entities.migration.v2.MotdList; import de.thm.arsnova.persistance.MotdListRepository; import org.ektorp.CouchDbConnector; import org.ektorp.DbAccessException; diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java index 29b948a838fa1e1d1000960decd5c5ec47938cf5..99b211bc2ebf40f3cb4d11015f48a12839cf25d1 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java @@ -18,12 +18,12 @@ package de.thm.arsnova.persistance.couchdb; import de.thm.arsnova.connector.model.Course; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Comment; -import de.thm.arsnova.entities.LoggedIn; +import de.thm.arsnova.entities.migration.v2.LoggedIn; import de.thm.arsnova.entities.migration.v2.Session; import de.thm.arsnova.entities.migration.v2.SessionInfo; -import de.thm.arsnova.entities.User; -import de.thm.arsnova.entities.VisitedSession; +import de.thm.arsnova.entities.migration.v2.VisitedSession; import de.thm.arsnova.entities.transport.ImportExportSession; import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.persistance.LogEntryRepository; @@ -144,7 +144,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp } @Override - public List<SessionInfo> findInfoForVisitedByUser(final User user, final int start, final int limit) { + public List<SessionInfo> findInfoForVisitedByUser(final UserAuthentication user, final int start, final int limit) { final List<Session> sessions = findVisitedByUsername(user.getUsername(), start, limit); if (sessions.isEmpty()) { return new ArrayList<>(); @@ -177,7 +177,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp /* TODO: Move to service layer. */ @Override - public SessionInfo importSession(final User user, final ImportExportSession importSession) { + public SessionInfo importSession(final UserAuthentication user, final ImportExportSession importSession) { /* FIXME: not yet migrated - move to service layer */ throw new UnsupportedOperationException(); // final Session session = this.saveSession(user, importSession.generateSessionEntity(user)); @@ -338,7 +338,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp } @Override - public List<Session> findByUser(final User user, final int start, final int limit) { + public List<Session> findByUser(final UserAuthentication user, final int start, final int limit) { return findByUsername(user.getUsername(), start, limit); } @@ -371,7 +371,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp } @Override - public List<Session> findForPublicPoolByUser(final User user) { + public List<Session> findForPublicPoolByUser(final UserAuthentication user) { /* TODO: Only load IDs and check against cache for data. */ return db.queryView( createQuery("partial_by_sessiontype_creator_name") @@ -383,7 +383,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp /* TODO: Move to service layer. */ @Override - public List<SessionInfo> findInfosForPublicPoolByUser(final User user) { + public List<SessionInfo> findInfosForPublicPoolByUser(final UserAuthentication user) { final List<Session> sessions = this.findForPublicPoolByUser(user); if (sessions.isEmpty()) { return new ArrayList<>(); @@ -393,7 +393,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp /* TODO: Move to service layer. */ @Override - public List<SessionInfo> getMySessionsInfo(final User user, final int start, final int limit) { + public List<SessionInfo> getMySessionsInfo(final UserAuthentication user, final int start, final int limit) { final List<Session> sessions = this.findByUser(user, start, limit); if (sessions.isEmpty()) { return new ArrayList<>(); @@ -417,7 +417,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp } /* TODO: Move to service layer. */ - private List<SessionInfo> getInfosForVisitedSessions(final List<Session> sessions, final User user) { + private List<SessionInfo> getInfosForVisitedSessions(final List<Session> sessions, final UserAuthentication user) { final ViewQuery answeredQuestionsView = createQuery("by_user_sessionid").designDocId("_design/Answer") .keys(sessions.stream().map(session -> ComplexKey.of(user.getUsername(), session.getId())).collect(Collectors.toList())); final ViewQuery contentIdsView = createQuery("by_sessionid").designDocId("_design/Content") @@ -539,7 +539,7 @@ public class CouchDbSessionRepository extends CouchDbCrudRepository<Session> imp /* TODO: Move to service layer. */ @Override - public LoggedIn registerAsOnlineUser(final User user, final Session session) { + public LoggedIn registerAsOnlineUser(final UserAuthentication user, final Session session) { LoggedIn loggedIn = new LoggedIn(); try { final List<LoggedIn> loggedInList = db.queryView(createQuery("all").designDocId("_design/LoggedIn").key(user.getUsername()), LoggedIn.class); diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java index e2e5e91345222adcdb83537bed659ba799485d3f..328beee9b533c770a896b0bb2a359183ee191d4f 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbUserRepository.java @@ -18,7 +18,7 @@ package de.thm.arsnova.persistance.couchdb; import com.google.common.collect.Lists; -import de.thm.arsnova.entities.DbUser; +import de.thm.arsnova.entities.migration.v2.DbUser; import de.thm.arsnova.persistance.UserRepository; import org.ektorp.BulkDeleteDocument; import org.ektorp.CouchDbConnector; diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbVisitedSessionRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbVisitedSessionRepository.java index a9bacfe27eb4f366cfdb5567981c5d841af7a195..82a76074314d67135d3bc06d58e1d18bb7571ae2 100644 --- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbVisitedSessionRepository.java +++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbVisitedSessionRepository.java @@ -1,7 +1,7 @@ package de.thm.arsnova.persistance.couchdb; import com.google.common.collect.Lists; -import de.thm.arsnova.entities.VisitedSession; +import de.thm.arsnova.entities.migration.v2.VisitedSession; import de.thm.arsnova.persistance.LogEntryRepository; import de.thm.arsnova.persistance.VisitedSessionRepository; import org.ektorp.BulkDeleteDocument; diff --git a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java index e81cd011141945f77d908e8f1c1fdf7ae37286f8..fe14c9c19bcdf79ffce3203c643fd4c130ee0331 100644 --- a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java +++ b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java @@ -17,10 +17,10 @@ */ package de.thm.arsnova.security; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.migration.v2.Content; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import de.thm.arsnova.persistance.CommentRepository; import de.thm.arsnova.persistance.ContentRepository; import de.thm.arsnova.persistance.SessionRepository; @@ -176,18 +176,18 @@ public class ApplicationPermissionEvaluator implements PermissionEvaluator { } if (authentication instanceof Pac4jAuthenticationToken) { - User user = null; + UserAuthentication user = null; final Pac4jAuthenticationToken token = (Pac4jAuthenticationToken) authentication; if (token.getProfile() instanceof Google2Profile) { final Google2Profile profile = (Google2Profile) token.getProfile(); - user = new User(profile); + user = new UserAuthentication(profile); } else if (token.getProfile() instanceof TwitterProfile) { final TwitterProfile profile = (TwitterProfile) token.getProfile(); - user = new User(profile); + user = new UserAuthentication(profile); } else if (token.getProfile() instanceof FacebookProfile) { final FacebookProfile profile = (FacebookProfile) token.getProfile(); - user = new User(profile); + user = new UserAuthentication(profile); } if (user != null) { diff --git a/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java b/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java index 5351d98c560baf58c5e99773c5f803d34d0b03ca..ac06be6edb0768b94464b789905ff29891561792 100644 --- a/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java +++ b/src/main/java/de/thm/arsnova/security/DbUserDetailsService.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.security; -import de.thm.arsnova.entities.DbUser; +import de.thm.arsnova.entities.migration.v2.DbUser; import de.thm.arsnova.persistance.UserRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/de/thm/arsnova/services/CommentService.java b/src/main/java/de/thm/arsnova/services/CommentService.java index 1525981ec21e96f4b36c9b1ad3078cc0637a4262..6039ae13c00748bc8d141195df880763f38529c6 100644 --- a/src/main/java/de/thm/arsnova/services/CommentService.java +++ b/src/main/java/de/thm/arsnova/services/CommentService.java @@ -2,7 +2,7 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.migration.v2.CommentReadingCount; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import java.util.List; @@ -17,7 +17,7 @@ public interface CommentService extends EntityService<Comment> { Comment getAndMarkRead(String commentId); - Comment getAndMarkReadInternal(String commentId, User user); + Comment getAndMarkReadInternal(String commentId, UserAuthentication user); void delete(String commentId); diff --git a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java b/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java index c0fd1fbc0821b49462fec508d874f11fa0b34d39..62141d4df91fd24e69d2604e64e0d7445d30b4b6 100644 --- a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java @@ -1,9 +1,9 @@ package de.thm.arsnova.services; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.migration.v2.CommentReadingCount; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import de.thm.arsnova.events.DeleteCommentEvent; import de.thm.arsnova.events.NewCommentEvent; import de.thm.arsnova.exceptions.ForbiddenException; @@ -53,7 +53,7 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem @PreAuthorize("isAuthenticated()") public boolean save(final Comment comment) { final Session session = sessionRepository.findByKeyword(comment.getSessionId()); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); comment.setSessionId(session.getId()); comment.setCreator(user.getUsername()); comment.setRead(false); @@ -91,7 +91,7 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem if (session == null) { throw new UnauthorizedException(); } - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); if (session.isCreator(user)) { commentRepository.deleteBySessionId(session.getId()); } else { @@ -115,7 +115,7 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem if (username == null) { return commentRepository.countReadingBySessionId(session.getId()); } else { - User currentUser = userService.getCurrentUser(); + UserAuthentication currentUser = userService.getCurrentUser(); if (!currentUser.getUsername().equals(username)) { throw new ForbiddenException(); } @@ -128,7 +128,7 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem @PreAuthorize("isAuthenticated()") public List<Comment> getBySessionKey(final String sessionKey, final int offset, final int limit) { final Session session = this.getSession(sessionKey); - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); if (session.isCreator(user)) { return commentRepository.findBySessionId(session.getId(), offset, limit); } else { @@ -139,7 +139,7 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem @Override @PreAuthorize("isAuthenticated()") public Comment getAndMarkRead(final String commentId) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); return this.getAndMarkReadInternal(commentId, user); } @@ -148,7 +148,7 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem * TODO: Find a better way of doing this... */ @Override - public Comment getAndMarkReadInternal(final String commentId, User user) { + public Comment getAndMarkReadInternal(final String commentId, UserAuthentication user) { final Comment comment = commentRepository.findOne(commentId); if (comment == null) { throw new NotFoundException(); @@ -164,8 +164,8 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem return comment; } - private User getCurrentUser() { - final User user = userService.getCurrentUser(); + private UserAuthentication getCurrentUser() { + final UserAuthentication user = userService.getCurrentUser(); if (user == null) { throw new UnauthorizedException(); } diff --git a/src/main/java/de/thm/arsnova/services/ContentService.java b/src/main/java/de/thm/arsnova/services/ContentService.java index b5891c2b2c3059d24de9985b708a3cf6bac689e4..375aabadbd29ad3a1280561ab131b144d755b251 100644 --- a/src/main/java/de/thm/arsnova/services/ContentService.java +++ b/src/main/java/de/thm/arsnova/services/ContentService.java @@ -17,9 +17,9 @@ */ package de.thm.arsnova.services; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Answer; import de.thm.arsnova.entities.migration.v2.Content; -import de.thm.arsnova.entities.User; import java.util.List; import java.util.Map; @@ -38,7 +38,7 @@ public interface ContentService extends EntityService<Content> { void delete(String questionId); - void startNewPiRound(String questionId, User user); + void startNewPiRound(String questionId, UserAuthentication user); void startNewPiRoundDelayed(String questionId, int time); @@ -52,7 +52,7 @@ public interface ContentService extends EntityService<Content> { Answer getMyAnswer(String questionId); - void getFreetextAnswerAndMarkRead(String answerId, User user); + void getFreetextAnswerAndMarkRead(String answerId, UserAuthentication user); List<Answer> getAnswers(String questionId, int piRound, int offset, int limit); @@ -118,11 +118,11 @@ public interface ContentService extends EntityService<Content> { List<String> getUnAnsweredLectureQuestionIds(String sessionkey); - List<String> getUnAnsweredLectureQuestionIds(String sessionKey, User user); + List<String> getUnAnsweredLectureQuestionIds(String sessionKey, UserAuthentication user); List<String> getUnAnsweredPreparationQuestionIds(String sessionkey); - List<String> getUnAnsweredPreparationQuestionIds(String sessionKey, User user); + List<String> getUnAnsweredPreparationQuestionIds(String sessionKey, UserAuthentication user); void publishAll(String sessionkey, boolean publish); diff --git a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java b/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java index 3fc47c22949cb2d5fda86766ed835c692dc71994..64b744966a06e27e130240f68d3ab1a71980f5b0 100644 --- a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java @@ -17,13 +17,13 @@ */ package de.thm.arsnova.services; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.AnswerQueueElement; import de.thm.arsnova.persistance.LogEntryRepository; import de.thm.arsnova.util.ImageUtils; import de.thm.arsnova.entities.migration.v2.Answer; import de.thm.arsnova.entities.migration.v2.Content; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import de.thm.arsnova.events.*; import de.thm.arsnova.exceptions.BadRequestException; import de.thm.arsnova.exceptions.NotFoundException; @@ -179,7 +179,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @CacheEvict(value = "flashcardcontentlists", allEntries = true, condition = "#content.getQuestionVariant().equals('flashcard')") }, put = {@CachePut(value = "contents", key = "#content.id")}) public Content update(final Content content) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); final Content oldContent = contentRepository.findOne(content.getId()); if (null == oldContent) { throw new NotFoundException(); @@ -217,7 +217,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem //@Cacheable("contentlists") public List<Content> getBySessionKey(final String sessionkey) { final Session session = getSession(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (session.isCreator(user)) { return contentRepository.findBySessionIdForSpeaker(session.getId()); } else { @@ -351,7 +351,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @Override @PreAuthorize("isAuthenticated() and hasPermission(#questionId, 'content', 'owner')") - public void startNewPiRound(final String questionId, User user) { + public void startNewPiRound(final String questionId, UserAuthentication user) { final Content content = contentRepository.findOne(questionId); final Session session = sessionRepository.findOne(content.getSessionId()); @@ -373,7 +373,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @PreAuthorize("hasPermission(#questionId, 'content', 'owner')") public void startNewPiRoundDelayed(final String questionId, final int time) { final ContentService contentService = this; - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); final Content content = contentRepository.findOne(questionId); final Session session = sessionRepository.findOne(content.getSessionId()); @@ -475,7 +475,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @CacheEvict(value = "preparationcontentlists", key = "#sessionId"), @CacheEvict(value = "flashcardcontentlists", key = "#sessionId") }) public void setVotingAdmissions(final String sessionkey, final boolean disableVoting, List<Content> contents) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Session session = getSession(sessionkey); if (!session.isCreator(user)) { throw new UnauthorizedException(); @@ -497,7 +497,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @Override @PreAuthorize("isAuthenticated()") public void setVotingAdmissionForAllQuestions(final String sessionkey, final boolean disableVoting) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Session session = getSession(sessionkey); if (!session.isCreator(user)) { throw new UnauthorizedException(); @@ -507,7 +507,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem } private Session getSessionWithAuthCheck(final String sessionKeyword) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); final Session session = sessionRepository.findByKeyword(sessionKeyword); if (user == null || session == null || !session.isCreator(user)) { throw new UnauthorizedException(); @@ -527,13 +527,13 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @Override @PreAuthorize("isAuthenticated()") public List<String> getUnAnsweredQuestionIds(final String sessionKey) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Session session = getSession(sessionKey); return contentRepository.findUnansweredIdsBySessionIdAndUser(session.getId(), user); } - private User getCurrentUser() { - final User user = userService.getCurrentUser(); + private UserAuthentication getCurrentUser() { + final UserAuthentication user = userService.getCurrentUser(); if (user == null) { throw new UnauthorizedException(); } @@ -551,7 +551,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem } @Override - public void getFreetextAnswerAndMarkRead(final String answerId, final User user) { + public void getFreetextAnswerAndMarkRead(final String answerId, final UserAuthentication user) { final Answer answer = answerRepository.findOne(answerId); if (answer == null) { throw new NotFoundException(); @@ -713,7 +713,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @PreAuthorize("isAuthenticated()") @CacheEvict(value = "answerlists", key = "#contentId") public Answer saveAnswer(final String contentId, final Answer answer) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Content content = get(contentId); if (content == null) { throw new NotFoundException(); @@ -752,7 +752,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @PreAuthorize("isAuthenticated()") @CacheEvict(value = "answerlists", allEntries = true) public Answer updateAnswer(final Answer answer) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); final Answer realAnswer = this.getMyAnswer(answer.getQuestionId()); if (user == null || realAnswer == null || !user.getUsername().equals(realAnswer.getUser())) { throw new UnauthorizedException(); @@ -781,7 +781,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem if (content == null) { throw new NotFoundException(); } - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); final Session session = sessionRepository.findOne(content.getSessionId()); if (user == null || session == null || !session.isCreator(user)) { throw new UnauthorizedException(); @@ -797,7 +797,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem //@Cacheable("lecturecontentlists") public List<Content> getLectureQuestions(final String sessionkey) { final Session session = getSession(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (session.isCreator(user)) { return contentRepository.findBySessionIdOnlyLectureVariant(session.getId()); } else { @@ -811,7 +811,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem //@Cacheable("flashcardcontentlists") public List<Content> getFlashcards(final String sessionkey) { final Session session = getSession(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (session.isCreator(user)) { return contentRepository.findBySessionIdOnlyFlashcardVariant(session.getId()); } else { @@ -825,7 +825,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem //@Cacheable("preparationcontentlists") public List<Content> getPreparationQuestions(final String sessionkey) { final Session session = getSession(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (session.isCreator(user)) { return contentRepository.findBySessionIdOnlyPreparationVariant(session.getId()); } else { @@ -929,12 +929,12 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @Override @PreAuthorize("isAuthenticated()") public List<String> getUnAnsweredLectureQuestionIds(final String sessionkey) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); return this.getUnAnsweredLectureQuestionIds(sessionkey, user); } @Override - public List<String> getUnAnsweredLectureQuestionIds(final String sessionkey, final User user) { + public List<String> getUnAnsweredLectureQuestionIds(final String sessionkey, final UserAuthentication user) { final Session session = getSession(sessionkey); return contentRepository.findUnansweredIdsBySessionIdAndUserOnlyLectureVariant(session.getId(), user); } @@ -942,12 +942,12 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @Override @PreAuthorize("isAuthenticated()") public List<String> getUnAnsweredPreparationQuestionIds(final String sessionkey) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); return this.getUnAnsweredPreparationQuestionIds(sessionkey, user); } @Override - public List<String> getUnAnsweredPreparationQuestionIds(final String sessionkey, final User user) { + public List<String> getUnAnsweredPreparationQuestionIds(final String sessionkey, final UserAuthentication user) { final Session session = getSession(sessionkey); return contentRepository.findUnansweredIdsBySessionIdAndUserOnlyPreparationVariant(session.getId(), user); } @@ -956,7 +956,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @PreAuthorize("isAuthenticated()") public void publishAll(final String sessionkey, final boolean publish) { /* TODO: resolve redundancies */ - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Session session = getSession(sessionkey); if (!session.isCreator(user)) { throw new UnauthorizedException(); @@ -973,7 +973,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @CacheEvict(value = "preparationcontentlists", key = "#sessionId"), @CacheEvict(value = "flashcardcontentlists", key = "#sessionId") }) public void publishQuestions(final String sessionkey, final boolean publish, List<Content> contents) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Session session = getSession(sessionkey); if (!session.isCreator(user)) { throw new UnauthorizedException(); @@ -995,7 +995,7 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem @PreAuthorize("isAuthenticated()") @CacheEvict(value = "answerlists", allEntries = true) public void deleteAllQuestionsAnswers(final String sessionkey) { - final User user = getCurrentUser(); + final UserAuthentication user = getCurrentUser(); final Session session = getSession(sessionkey); if (!session.isCreator(user)) { throw new UnauthorizedException(); diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/services/FeedbackService.java index efa40e16ecf997b44ddf02559e34f50568014d52..9c7fc03fa91c8f81b53e6049e6b7d799aca3cfac 100644 --- a/src/main/java/de/thm/arsnova/services/FeedbackService.java +++ b/src/main/java/de/thm/arsnova/services/FeedbackService.java @@ -18,7 +18,7 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Feedback; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; /** * The functionality the feedback service should provide. @@ -36,7 +36,7 @@ public interface FeedbackService { long calculateRoundedAverageFeedback(String sessionkey); - boolean save(String keyword, int value, User user); + boolean save(String keyword, int value, UserAuthentication user); - Integer getBySessionKeyAndUser(String keyword, User user); + Integer getBySessionKeyAndUser(String keyword, UserAuthentication user); } diff --git a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java b/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java index f00a068e99c38292bf82b841969d9297719cea36..0ec0321e49a0284c78f61f3fc3c4179caf829b04 100644 --- a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java @@ -18,8 +18,8 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Feedback; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import de.thm.arsnova.events.DeleteFeedbackForSessionsEvent; import de.thm.arsnova.events.NewFeedbackEvent; import de.thm.arsnova.exceptions.NoContentException; @@ -66,18 +66,18 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub @Override @Scheduled(fixedDelay = DEFAULT_SCHEDULER_DELAY) public void cleanFeedbackVotes() { - Map<Session, List<User>> deletedFeedbackOfUsersInSession = feedbackStorage.cleanVotes(cleanupFeedbackDelay); + Map<Session, List<UserAuthentication>> deletedFeedbackOfUsersInSession = feedbackStorage.cleanVotes(cleanupFeedbackDelay); /* * mapping (Session -> Users) is not suitable for web sockets, because we want to sent all affected * sessions to a single user in one go instead of sending multiple messages for each session. Hence, * we need the mapping (User -> Sessions) */ - final Map<User, Set<Session>> affectedSessionsOfUsers = new HashMap<>(); + final Map<UserAuthentication, Set<Session>> affectedSessionsOfUsers = new HashMap<>(); - for (Map.Entry<Session, List<User>> entry : deletedFeedbackOfUsersInSession.entrySet()) { + for (Map.Entry<Session, List<UserAuthentication>> entry : deletedFeedbackOfUsersInSession.entrySet()) { final Session session = entry.getKey(); - final List<User> users = entry.getValue(); - for (User user : users) { + final List<UserAuthentication> users = entry.getValue(); + for (UserAuthentication user : users) { Set<Session> affectedSessions; if (affectedSessionsOfUsers.containsKey(user)) { affectedSessions = affectedSessionsOfUsers.get(user); @@ -89,8 +89,8 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub } } // Send feedback reset event to all affected users - for (Map.Entry<User, Set<Session>> entry : affectedSessionsOfUsers.entrySet()) { - final User user = entry.getKey(); + for (Map.Entry<UserAuthentication, Set<Session>> entry : affectedSessionsOfUsers.entrySet()) { + final UserAuthentication user = entry.getKey(); final Set<Session> arsSessions = entry.getValue(); this.publisher.publishEvent(new DeleteFeedbackForSessionsEvent(this, arsSessions, user)); } @@ -103,12 +103,12 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub @Override public void cleanFeedbackVotesBySessionKey(final String keyword, final int cleanupFeedbackDelayInMins) { final Session session = sessionRepository.findByKeyword(keyword); - List<User> affectedUsers = feedbackStorage.cleanVotesBySession(session, cleanupFeedbackDelayInMins); + List<UserAuthentication> affectedUsers = feedbackStorage.cleanVotesBySession(session, cleanupFeedbackDelayInMins); Set<Session> sessionSet = new HashSet<>(); sessionSet.add(session); // Send feedback reset event to all affected users - for (User user : affectedUsers) { + for (UserAuthentication user : affectedUsers) { this.publisher.publishEvent(new DeleteFeedbackForSessionsEvent(this, sessionSet, user)); } // send the new feedback to all clients in affected session @@ -157,7 +157,7 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub } @Override - public boolean save(final String keyword, final int value, final User user) { + public boolean save(final String keyword, final int value, final UserAuthentication user) { final Session session = sessionRepository.findByKeyword(keyword); if (session == null) { throw new NotFoundException(); @@ -169,7 +169,7 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub } @Override - public Integer getBySessionKeyAndUser(final String keyword, final User user) { + public Integer getBySessionKeyAndUser(final String keyword, final UserAuthentication user) { final Session session = sessionRepository.findByKeyword(keyword); if (session == null) { throw new NotFoundException(); diff --git a/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java b/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java index cd58398953091977836ebe701432d5142c26428f..4bef32e9047c5a59b99f63d7dae076d8885efca4 100644 --- a/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java +++ b/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java @@ -1,16 +1,16 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Feedback; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import java.util.List; import java.util.Map; public interface FeedbackStorageService { Feedback getBySession(Session session); - Integer getBySessionAndUser(Session session, User u); - void save(Session session, int value, User user); - Map<Session, List<User>> cleanVotes(int cleanupFeedbackDelay); - List<User> cleanVotesBySession(Session session, int cleanupFeedbackDelayInMins); + Integer getBySessionAndUser(Session session, UserAuthentication u); + void save(Session session, int value, UserAuthentication user); + Map<Session, List<UserAuthentication>> cleanVotes(int cleanupFeedbackDelay); + List<UserAuthentication> cleanVotesBySession(Session session, int cleanupFeedbackDelayInMins); } diff --git a/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java b/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java index 60c317f0cf489ae34913e463796f61fc6abf294d..3fc58e30e4826919d4430c4ea39a556876521876 100644 --- a/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java @@ -18,8 +18,8 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Feedback; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; @@ -40,9 +40,9 @@ public class FeedbackStorageServiceImpl implements FeedbackStorageService { private static class FeedbackStorageObject { private final int value; private final Date timestamp; - private final User user; + private final UserAuthentication user; - public FeedbackStorageObject(final int initValue, final User u) { + public FeedbackStorageObject(final int initValue, final UserAuthentication u) { value = initValue; timestamp = new Date(); user = u; @@ -54,12 +54,12 @@ public class FeedbackStorageServiceImpl implements FeedbackStorageService { public Date getTimestamp() { return timestamp; } - public boolean fromUser(final User u) { + public boolean fromUser(final UserAuthentication u) { return user.equals(u); } } - private final Map<Session, Map<User, FeedbackStorageObject>> data = + private final Map<Session, Map<UserAuthentication, FeedbackStorageObject>> data = new ConcurrentHashMap<>(); @Override @@ -95,7 +95,7 @@ public class FeedbackStorageServiceImpl implements FeedbackStorageService { } @Override - public Integer getBySessionAndUser(final Session session, final User u) { + public Integer getBySessionAndUser(final Session session, final UserAuthentication u) { if (data.get(session) == null) { return null; } @@ -111,9 +111,9 @@ public class FeedbackStorageServiceImpl implements FeedbackStorageService { @Override @Transactional(isolation = Isolation.READ_COMMITTED) - public void save(final Session session, final int value, final User user) { + public void save(final Session session, final int value, final UserAuthentication user) { if (data.get(session) == null) { - data.put(session, new ConcurrentHashMap<User, FeedbackStorageObject>()); + data.put(session, new ConcurrentHashMap<UserAuthentication, FeedbackStorageObject>()); } data.get(session).put(user, new FeedbackStorageObject(value, user)); @@ -121,11 +121,11 @@ public class FeedbackStorageServiceImpl implements FeedbackStorageService { @Override @Transactional(isolation = Isolation.READ_COMMITTED) - public Map<Session, List<User>> cleanVotes(final int cleanupFeedbackDelay) { - final Map<Session, List<User>> removedFeedbackOfUsersInSession = new HashMap<>(); + public Map<Session, List<UserAuthentication>> cleanVotes(final int cleanupFeedbackDelay) { + final Map<Session, List<UserAuthentication>> removedFeedbackOfUsersInSession = new HashMap<>(); for (final Session session : data.keySet()) { if (!session.getFeatures().isLiveClicker()) { - List<User> affectedUsers = cleanVotesBySession(session, cleanupFeedbackDelay); + List<UserAuthentication> affectedUsers = cleanVotesBySession(session, cleanupFeedbackDelay); if (!affectedUsers.isEmpty()) { removedFeedbackOfUsersInSession.put(session, affectedUsers); } @@ -136,17 +136,17 @@ public class FeedbackStorageServiceImpl implements FeedbackStorageService { @Override @Transactional(isolation = Isolation.READ_COMMITTED) - public List<User> cleanVotesBySession(final Session session, final int cleanupFeedbackDelayInMins) { + public List<UserAuthentication> cleanVotesBySession(final Session session, final int cleanupFeedbackDelayInMins) { final long timelimitInMillis = TimeUnit.MILLISECONDS.convert(cleanupFeedbackDelayInMins, TimeUnit.MINUTES); final Date maxAllowedTime = new Date(System.currentTimeMillis() - timelimitInMillis); final boolean forceClean = cleanupFeedbackDelayInMins == 0; - final Map<User, FeedbackStorageObject> sessionFeedbacks = data.get(session); - final List<User> affectedUsers = new ArrayList<>(); + final Map<UserAuthentication, FeedbackStorageObject> sessionFeedbacks = data.get(session); + final List<UserAuthentication> affectedUsers = new ArrayList<>(); if (sessionFeedbacks != null) { - for (final Map.Entry<User, FeedbackStorageObject> entry : sessionFeedbacks.entrySet()) { - final User user = entry.getKey(); + for (final Map.Entry<UserAuthentication, FeedbackStorageObject> entry : sessionFeedbacks.entrySet()) { + final UserAuthentication user = entry.getKey(); final FeedbackStorageObject feedback = entry.getValue(); final boolean timeIsUp = feedback.getTimestamp().before(maxAllowedTime); final boolean isAwayFeedback = getBySessionAndUser(session, user).equals(Feedback.FEEDBACK_AWAY); diff --git a/src/main/java/de/thm/arsnova/services/MotdService.java b/src/main/java/de/thm/arsnova/services/MotdService.java index 91303a43e29130182c7276802c90c5fddd1a6050..221fc6e0ba92c4e6d4091e486699dcf00a3174b4 100644 --- a/src/main/java/de/thm/arsnova/services/MotdService.java +++ b/src/main/java/de/thm/arsnova/services/MotdService.java @@ -18,7 +18,7 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Motd; -import de.thm.arsnova.entities.MotdList; +import de.thm.arsnova.entities.migration.v2.MotdList; import java.util.Date; import java.util.List; diff --git a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java b/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java index 35d524cf963b91649d4ad75ea555048446820545..9577c4fc3024719f48c5b251e602b968fa97cb75 100644 --- a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java @@ -18,9 +18,9 @@ package de.thm.arsnova.services; import de.thm.arsnova.entities.Motd; -import de.thm.arsnova.entities.MotdList; +import de.thm.arsnova.entities.migration.v2.MotdList; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.exceptions.BadRequestException; import de.thm.arsnova.persistance.MotdListRepository; import de.thm.arsnova.persistance.MotdRepository; @@ -199,7 +199,7 @@ public class MotdServiceImpl extends DefaultEntityServiceImpl<Motd> implements M @PreAuthorize("isAuthenticated()") @Cacheable(cacheNames = "motdlist", key = "#username") public MotdList getMotdListByUsername(final String username) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (username.equals(user.getUsername()) && !"guest".equals(user.getType())) { return motdListRepository.findByUsername(username); } @@ -210,7 +210,7 @@ public class MotdServiceImpl extends DefaultEntityServiceImpl<Motd> implements M @PreAuthorize("isAuthenticated()") @CachePut(cacheNames = "motdlist", key = "#motdList.username") public MotdList saveMotdList(MotdList motdList) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (user.getUsername().equals(motdList.getUsername())) { return motdListRepository.save(motdList); } @@ -220,7 +220,7 @@ public class MotdServiceImpl extends DefaultEntityServiceImpl<Motd> implements M @Override @PreAuthorize("isAuthenticated()") public MotdList updateMotdList(MotdList motdList) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (user.getUsername().equals(motdList.getUsername())) { return motdListRepository.save(motdList); } diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java index b1a2321029f4483318f9635adf92fc029f3dbfd5..8c0a9e3c46638f4cdb46ea9dbf2f3d4155b9439d 100644 --- a/src/main/java/de/thm/arsnova/services/SessionService.java +++ b/src/main/java/de/thm/arsnova/services/SessionService.java @@ -18,10 +18,10 @@ package de.thm.arsnova.services; import de.thm.arsnova.connector.model.Course; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; import de.thm.arsnova.entities.migration.v2.SessionFeature; import de.thm.arsnova.entities.migration.v2.SessionInfo; -import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.transport.ImportExportSession; import de.thm.arsnova.entities.transport.ScoreStatistics; @@ -36,7 +36,7 @@ public interface SessionService extends EntityService<Session> { Session getForAdmin(final String keyword); - Session getInternal(String keyword, User user); + Session getInternal(String keyword, UserAuthentication user); Session save(Session session); @@ -64,7 +64,7 @@ public interface SessionService extends EntityService<Session> { Session updateCreator(String sessionkey, String newCreator); - Session updateInternal(Session session, User user); + Session updateInternal(Session session, UserAuthentication user); int[] deleteCascading(Session session); diff --git a/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java index 57f38432fac483e81a96663b6118ba32ef4487fe..28795bdf3838de9a65b945a4b84113b17b9c4ce8 100644 --- a/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java @@ -17,6 +17,7 @@ */ package de.thm.arsnova.services; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.persistance.AnswerRepository; import de.thm.arsnova.persistance.CommentRepository; import de.thm.arsnova.persistance.ContentRepository; @@ -30,7 +31,6 @@ import de.thm.arsnova.entities.ScoreOptions; import de.thm.arsnova.entities.migration.v2.Session; import de.thm.arsnova.entities.migration.v2.SessionFeature; import de.thm.arsnova.entities.migration.v2.SessionInfo; -import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.transport.ImportExportSession; import de.thm.arsnova.entities.transport.ScoreStatistics; import de.thm.arsnova.events.DeleteSessionEvent; @@ -217,7 +217,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem userService.removeUserFromSessionBySocketId(socketId); return null; } - final User user = userService.getUser2SocketId(socketId); + final UserAuthentication user = userService.getUser2SocketId(socketId); userService.addUserToSessionBySocketId(socketId, keyword); @@ -257,7 +257,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @Override @PreAuthorize("isAuthenticated()") public Session getByKey(final String keyword) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); return this.getInternal(keyword, user); } @@ -271,7 +271,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem * TODO: Find a better way of doing this... */ @Override - public Session getInternal(final String keyword, final User user) { + public Session getInternal(final String keyword, final UserAuthentication user) { final Session session = sessionRepository.findByKeyword(keyword); if (session == null) { throw new NotFoundException(); @@ -319,7 +319,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @Override @PreAuthorize("isAuthenticated()") public List<SessionInfo> getMySessionsInfo(final int offset, final int limit) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); return sessionRepository.getMySessionsInfo(user, offset, limit); } @@ -470,7 +470,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem * TODO: Find a better way of doing this... */ @Override - public Session updateInternal(final Session session, final User user) { + public Session updateInternal(final Session session, final UserAuthentication user) { if (session.isCreator(user)) { sessionRepository.save(session); return session; @@ -508,7 +508,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @PreAuthorize("hasPermission(#sessionkey, 'session', 'read')") public ScoreStatistics getMyLearningProgress(final String sessionkey, final String type, final String questionVariant) { final Session session = sessionRepository.findByKeyword(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); ScoreCalculator scoreCalculator = scoreCalculatorFactory.create(type, questionVariant); return scoreCalculator.getMyProgress(session, user); } @@ -516,7 +516,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @Override @PreAuthorize("hasPermission('', 'session', 'create')") public SessionInfo importSession(ImportExportSession importSession) { - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); final SessionInfo info = sessionRepository.importSession(user, importSession); if (info == null) { throw new NullPointerException("Could not import session."); @@ -536,7 +536,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem ImportExportSession temp = sessionRepository.exportSession(sessionkey, false, false); temp.getSession().setPublicPool(pp); temp.getSession().setSessionType("public_pool"); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); return sessionRepository.importSession(user, temp); } @@ -555,7 +555,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @PreAuthorize("hasPermission(#sessionkey, 'session', 'owner')") public SessionFeature updateFeatures(String sessionkey, SessionFeature features) { final Session session = sessionRepository.findByKeyword(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); session.setFeatures(features); this.publisher.publishEvent(new FeatureChangeEvent(this, session)); sessionRepository.save(session); @@ -567,7 +567,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @PreAuthorize("hasPermission(#sessionkey, 'session', 'owner')") public boolean lockFeedbackInput(String sessionkey, Boolean lock) { final Session session = sessionRepository.findByKeyword(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); if (!lock) { feedbackService.cleanFeedbackVotesBySessionKey(sessionkey, 0); } @@ -583,7 +583,7 @@ public class SessionServiceImpl extends DefaultEntityServiceImpl<Session> implem @PreAuthorize("hasPermission(#sessionkey, 'session', 'owner')") public boolean flipFlashcards(String sessionkey, Boolean flip) { final Session session = sessionRepository.findByKeyword(sessionkey); - final User user = userService.getCurrentUser(); + final UserAuthentication user = userService.getCurrentUser(); session.setFlipFlashcards(flip); this.publisher.publishEvent(new FlipFlashcardsEvent(this, session)); sessionRepository.save(session); diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java index d48a3bf38ce6db2d4e7d017afafb82c8d3efc8fe..2a082a827e8a9617fdfde0832f4423cc8b9cea0a 100644 --- a/src/main/java/de/thm/arsnova/services/UserService.java +++ b/src/main/java/de/thm/arsnova/services/UserService.java @@ -17,8 +17,8 @@ */ package de.thm.arsnova.services; -import de.thm.arsnova.entities.DbUser; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; +import de.thm.arsnova.entities.migration.v2.DbUser; import java.util.Map; import java.util.Set; @@ -28,23 +28,23 @@ import java.util.UUID; * The functionality the user service should provide. */ public interface UserService { - User getCurrentUser(); + UserAuthentication getCurrentUser(); boolean isBannedFromLogin(String addr); void increaseFailedLoginCount(String addr); - User getUser2SocketId(UUID socketId); + UserAuthentication getUser2SocketId(UUID socketId); - void putUser2SocketId(UUID socketId, User user); + void putUser2SocketId(UUID socketId, UserAuthentication user); void removeUser2SocketId(UUID socketId); - Set<Map.Entry<UUID, User>> socketId2User(); + Set<Map.Entry<UUID, UserAuthentication>> socketId2User(); - boolean isUserInSession(User user, String keyword); + boolean isUserInSession(UserAuthentication user, String keyword); - Set<User> getUsersBySessionKey(String keyword); + Set<UserAuthentication> getUsersBySessionKey(String keyword); String getSessionByUsername(String username); @@ -52,7 +52,7 @@ public interface UserService { void removeUserFromSessionBySocketId(UUID socketId); - void removeUserFromMaps(User user); + void removeUserFromMaps(UserAuthentication user); int loggedInUsers(); diff --git a/src/main/java/de/thm/arsnova/services/UserServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserServiceImpl.java index 2adce602e2084a0f5dd9f93d5dddaf60fa3f5300..9fe8766892b2d547d99e09198946f8606d0aa02e 100644 --- a/src/main/java/de/thm/arsnova/services/UserServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/UserServiceImpl.java @@ -18,8 +18,8 @@ package de.thm.arsnova.services; import com.codahale.metrics.annotation.Gauge; -import de.thm.arsnova.entities.DbUser; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; +import de.thm.arsnova.entities.migration.v2.DbUser; import de.thm.arsnova.exceptions.BadRequestException; import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.exceptions.UnauthorizedException; @@ -89,10 +89,10 @@ public class UserServiceImpl implements UserService { private static final Logger logger = LoggerFactory.getLogger(UserServiceImpl.class); - private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap<UUID, UserAuthentication> socketid2user = new ConcurrentHashMap<>(); /* used for Socket.IO online check solution (new) */ - private static final ConcurrentHashMap<User, String> user2session = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap<UserAuthentication, String> user2session = new ConcurrentHashMap<>(); private UserRepository userRepository; @@ -178,29 +178,29 @@ public class UserServiceImpl implements UserService { } @Override - public User getCurrentUser() { + public UserAuthentication getCurrentUser() { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication == null || authentication.getPrincipal() == null) { return null; } - User user = null; + UserAuthentication user = null; if (authentication instanceof Pac4jAuthenticationToken) { user = getOAuthUser(authentication); } else if (authentication instanceof CasAuthenticationToken) { final CasAuthenticationToken token = (CasAuthenticationToken) authentication; - user = new User(token.getAssertion().getPrincipal()); + user = new UserAuthentication(token.getAssertion().getPrincipal()); } else if (authentication instanceof AnonymousAuthenticationToken) { final AnonymousAuthenticationToken token = (AnonymousAuthenticationToken) authentication; - user = new User(token); + user = new UserAuthentication(token); } else if (authentication instanceof UsernamePasswordAuthenticationToken) { final UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) authentication; - user = new User(token); + user = new UserAuthentication(token); if (authentication.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_GUEST"))) { - user.setType(User.GUEST); + user.setType(UserAuthentication.GUEST); } else if (authentication.getAuthorities().contains(new SimpleGrantedAuthority("ROLE_DB_USER"))) { - user.setType(User.ARSNOVA); + user.setType(UserAuthentication.ARSNOVA); } } @@ -213,18 +213,18 @@ public class UserServiceImpl implements UserService { return user; } - private User getOAuthUser(final Authentication authentication) { - User user = null; + private UserAuthentication getOAuthUser(final Authentication authentication) { + UserAuthentication user = null; final Pac4jAuthenticationToken token = (Pac4jAuthenticationToken) authentication; if (token.getProfile() instanceof Google2Profile) { final Google2Profile profile = (Google2Profile) token.getProfile(); - user = new User(profile); + user = new UserAuthentication(profile); } else if (token.getProfile() instanceof TwitterProfile) { final TwitterProfile profile = (TwitterProfile) token.getProfile(); - user = new User(profile); + user = new UserAuthentication(profile); } else if (token.getProfile() instanceof FacebookProfile) { final FacebookProfile profile = (FacebookProfile) token.getProfile(); - user = new User(profile); + user = new UserAuthentication(profile); } return user; } @@ -250,17 +250,17 @@ public class UserServiceImpl implements UserService { } @Override - public User getUser2SocketId(final UUID socketId) { + public UserAuthentication getUser2SocketId(final UUID socketId) { return socketid2user.get(socketId); } @Override - public void putUser2SocketId(final UUID socketId, final User user) { + public void putUser2SocketId(final UUID socketId, final UserAuthentication user) { socketid2user.put(socketId, user); } @Override - public Set<Map.Entry<UUID, User>> socketId2User() { + public Set<Map.Entry<UUID, UserAuthentication>> socketId2User() { return socketid2user.entrySet(); } @@ -270,7 +270,7 @@ public class UserServiceImpl implements UserService { } @Override - public boolean isUserInSession(final User user, final String keyword) { + public boolean isUserInSession(final UserAuthentication user, final String keyword) { if (keyword == null) { return false; } @@ -280,9 +280,9 @@ public class UserServiceImpl implements UserService { } @Override - public Set<User> getUsersBySessionKey(final String keyword) { - final Set<User> result = new HashSet<>(); - for (final Entry<User, String> e : user2session.entrySet()) { + public Set<UserAuthentication> getUsersBySessionKey(final String keyword) { + final Set<UserAuthentication> result = new HashSet<>(); + for (final Entry<UserAuthentication, String> e : user2session.entrySet()) { if (e.getValue().equals(keyword)) { result.add(e.getKey()); } @@ -294,14 +294,14 @@ public class UserServiceImpl implements UserService { @Override @Transactional(isolation = Isolation.READ_COMMITTED) public void addUserToSessionBySocketId(final UUID socketId, final String keyword) { - final User user = socketid2user.get(socketId); + final UserAuthentication user = socketid2user.get(socketId); user2session.put(user, keyword); } @Override @Transactional(isolation = Isolation.READ_COMMITTED) public void removeUserFromSessionBySocketId(final UUID socketId) { - final User user = socketid2user.get(socketId); + final UserAuthentication user = socketid2user.get(socketId); if (null == user) { logger.warn("No user exists for socket {}.", socketId); @@ -312,7 +312,7 @@ public class UserServiceImpl implements UserService { @Override public String getSessionByUsername(final String username) { - for (final Entry<User, String> entry : user2session.entrySet()) { + for (final Entry<UserAuthentication, String> entry : user2session.entrySet()) { if (entry.getKey().getUsername().equals(username)) { return entry.getValue(); } @@ -327,7 +327,7 @@ public class UserServiceImpl implements UserService { } @Override - public void removeUserFromMaps(final User user) { + public void removeUserFromMaps(final UserAuthentication user) { if (user != null) { user2session.remove(user); } @@ -446,7 +446,7 @@ public class UserServiceImpl implements UserService { @Override public DbUser deleteByUsername(String username) { - User user = getCurrentUser(); + UserAuthentication user = getCurrentUser(); if (!user.getUsername().equals(username.toLowerCase()) && !SecurityContextHolder.getContext().getAuthentication().getAuthorities() .contains(new SimpleGrantedAuthority("ROLE_ADMIN"))) { diff --git a/src/main/java/de/thm/arsnova/services/UserSessionService.java b/src/main/java/de/thm/arsnova/services/UserSessionService.java index d886e18aa26c610652dac2f50f33ab40d86d99c1..557044b8c4ed99164159b20b859ce14e5a9a88c8 100644 --- a/src/main/java/de/thm/arsnova/services/UserSessionService.java +++ b/src/main/java/de/thm/arsnova/services/UserSessionService.java @@ -17,8 +17,8 @@ */ package de.thm.arsnova.services; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import java.util.UUID; @@ -32,8 +32,8 @@ public interface UserSessionService { SPEAKER } - void setUser(User user); - User getUser(); + void setUser(UserAuthentication user); + UserAuthentication getUser(); void setSession(Session session); Session getSession(); diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java index eabca0c318a83d3f5463a1134fba9a7fc2c03226..e1322349240dc5eecad357a551b17d7b93538c4c 100644 --- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java +++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java @@ -17,8 +17,8 @@ */ package de.thm.arsnova.services; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.ScopedProxyMode; import org.springframework.stereotype.Component; @@ -34,19 +34,19 @@ import java.util.UUID; public class UserSessionServiceImpl implements UserSessionService, Serializable { private static final long serialVersionUID = 1L; - private User user; + private UserAuthentication user; private Session session; private UUID socketId; private Role role; @Override - public void setUser(final User u) { + public void setUser(final UserAuthentication u) { user = u; user.setRole(role); } @Override - public User getUser() { + public UserAuthentication getUser() { return user; } diff --git a/src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java index 2e28d96b4507fffdb6726b1f1516a205a8be3fc9..8e0a41614777982578511f30ea18081b5dc29e51 100644 --- a/src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java +++ b/src/main/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculator.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.services.score; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.ScoreStatistics; import de.thm.arsnova.persistance.SessionStatisticsRepository; @@ -71,7 +71,7 @@ public class QuestionBasedScoreCalculator extends VariantScoreCalculator { } @Override - protected ScoreStatistics createMyProgress(User user) { + protected ScoreStatistics createMyProgress(UserAuthentication user) { final int numerator = numQuestionsCorrectForUser(user); final int denominator = courseScore.getQuestionCount(); ScoreStatistics lpv = new ScoreStatistics(); @@ -84,7 +84,7 @@ public class QuestionBasedScoreCalculator extends VariantScoreCalculator { return lpv; } - private int numQuestionsCorrectForUser(User user) { + private int numQuestionsCorrectForUser(UserAuthentication user) { int numQuestionsCorrect = 0; for (QuestionScore questionScore : courseScore) { numQuestionsCorrect += countCorrectAnswersForUser(user, questionScore); @@ -92,7 +92,7 @@ public class QuestionBasedScoreCalculator extends VariantScoreCalculator { return numQuestionsCorrect; } - private int countCorrectAnswersForUser(User user, QuestionScore questionScore) { + private int countCorrectAnswersForUser(UserAuthentication user, QuestionScore questionScore) { int numQuestionsCorrect = 0; int requiredScore = questionScore.getMaximum(); for (UserScore userScore : questionScore) { diff --git a/src/main/java/de/thm/arsnova/services/score/QuestionScore.java b/src/main/java/de/thm/arsnova/services/score/QuestionScore.java index 88ecf31bdcebf055ae412bd02d37d15966b187ed..7480287eb8b96369b2b47763eeec0f438554459c 100644 --- a/src/main/java/de/thm/arsnova/services/score/QuestionScore.java +++ b/src/main/java/de/thm/arsnova/services/score/QuestionScore.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.services.score; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import java.util.ArrayList; import java.util.Iterator; @@ -74,7 +74,7 @@ public class QuestionScore implements Iterable<UserScore> { return totalScore; } - public int getTotalUserScore(User user) { + public int getTotalUserScore(UserAuthentication user) { int totalScore = 0; for (UserScore score : userScores) { if (score.isUser(user)) { diff --git a/src/main/java/de/thm/arsnova/services/score/Score.java b/src/main/java/de/thm/arsnova/services/score/Score.java index f7fdcb69d444090abfbd08f2232362a30cdc23da..da4377bddd22293302188a8952d63ee28961e06c 100644 --- a/src/main/java/de/thm/arsnova/services/score/Score.java +++ b/src/main/java/de/thm/arsnova/services/score/Score.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.services.score; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import java.util.HashMap; import java.util.HashSet; @@ -90,7 +90,7 @@ public class Score implements Iterable<QuestionScore> { return score; } - public double getTotalUserScore(User user) { + public double getTotalUserScore(UserAuthentication user) { int score = 0; for (QuestionScore questionScore : this) { score += questionScore.getTotalUserScore(user); diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java index 309c9bef05500783130a7796d139a6e9e64bc270..a444d3ecf0ca97f1f6f5fc6eee870eee027ae9fd 100644 --- a/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java +++ b/src/main/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculator.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.services.score; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.ScoreStatistics; import de.thm.arsnova.persistance.SessionStatisticsRepository; @@ -54,7 +54,7 @@ public class ScoreBasedScoreCalculator extends VariantScoreCalculator { } @Override - protected ScoreStatistics createMyProgress(User user) { + protected ScoreStatistics createMyProgress(UserAuthentication user) { ScoreStatistics lpv = new ScoreStatistics(); lpv.setCourseProgress(coursePercentage()); lpv.setNumQuestions(courseScore.getQuestionCount()); @@ -65,7 +65,7 @@ public class ScoreBasedScoreCalculator extends VariantScoreCalculator { return lpv; } - private int myPercentage(User user) { + private int myPercentage(UserAuthentication user) { final int courseMaximumValue = courseScore.getMaximumScore(); final double userTotalValue = courseScore.getTotalUserScore(user); if (courseMaximumValue == 0) { diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java index 6c39b62bdb8aa447f54c924239bd1e6dfbc9384a..15760aba6ada744f84ba348eb4e61b486de3333d 100644 --- a/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java +++ b/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java @@ -18,7 +18,7 @@ package de.thm.arsnova.services.score; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.ScoreStatistics; /** @@ -28,5 +28,5 @@ public interface ScoreCalculator { ScoreStatistics getCourseProgress(Session session); - ScoreStatistics getMyProgress(Session session, User user); + ScoreStatistics getMyProgress(Session session, UserAuthentication user); } diff --git a/src/main/java/de/thm/arsnova/services/score/UserScore.java b/src/main/java/de/thm/arsnova/services/score/UserScore.java index 9a31de8e2d0b1b7eb0617d79527d46599aee12b5..d355bdce55041379ed8d30a2e927177b5bc9e88b 100644 --- a/src/main/java/de/thm/arsnova/services/score/UserScore.java +++ b/src/main/java/de/thm/arsnova/services/score/UserScore.java @@ -17,7 +17,7 @@ */ package de.thm.arsnova.services.score; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; /** * The learning progress answer score of a particular user. @@ -41,7 +41,7 @@ public class UserScore { return score; } - public boolean isUser(User user) { + public boolean isUser(UserAuthentication user) { return user.getUsername().equals(username); } diff --git a/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java index d32c6c7290ebbbf904f1778481ed1edd89300b5c..79b2e84603736f26906660b35866f34d0c553879 100644 --- a/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java +++ b/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java @@ -18,7 +18,7 @@ package de.thm.arsnova.services.score; import de.thm.arsnova.entities.migration.v2.Session; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.ScoreStatistics; import de.thm.arsnova.persistance.SessionStatisticsRepository; import org.springframework.cache.annotation.Cacheable; @@ -61,7 +61,7 @@ abstract class VariantScoreCalculator implements ScoreCalculator { protected abstract ScoreStatistics createCourseProgress(); @Override - public ScoreStatistics getMyProgress(Session session, User user) { + public ScoreStatistics getMyProgress(Session session, UserAuthentication user) { this.refreshProgress(session); this.filterVariant(); return this.createMyProgress(user); @@ -73,6 +73,6 @@ abstract class VariantScoreCalculator implements ScoreCalculator { } } - protected abstract ScoreStatistics createMyProgress(User user); + protected abstract ScoreStatistics createMyProgress(UserAuthentication user); } diff --git a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java index a4f840e1bdd6e6312c9f875914ba7fa88734f662..3c7d40c2eaf3b1e95319f730b3c1b70ddc9949b0 100644 --- a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java +++ b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java @@ -28,9 +28,9 @@ import com.corundumstudio.socketio.listener.DataListener; import com.corundumstudio.socketio.listener.DisconnectListener; import com.corundumstudio.socketio.protocol.Packet; import com.corundumstudio.socketio.protocol.PacketType; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.migration.v2.Comment; import de.thm.arsnova.entities.ScoreOptions; -import de.thm.arsnova.entities.User; import de.thm.arsnova.entities.migration.v2.SessionFeature; import de.thm.arsnova.events.*; import de.thm.arsnova.exceptions.NoContentException; @@ -143,7 +143,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova @Override @Timed(name = "setFeedbackEvent.onData") public void onData(final SocketIOClient client, final Feedback data, final AckRequest ackSender) { - final User u = userService.getUser2SocketId(client.getSessionId()); + final UserAuthentication u = userService.getUser2SocketId(client.getSessionId()); if (u == null) { logger.info("Client {} tried to send feedback but is not mapped to a user", client.getSessionId()); @@ -167,7 +167,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova @Override @Timed(name = "setSessionEvent.onData") public void onData(final SocketIOClient client, final Session session, final AckRequest ackSender) { - final User u = userService.getUser2SocketId(client.getSessionId()); + final UserAuthentication u = userService.getUser2SocketId(client.getSessionId()); if (null == u) { logger.info("Client {} requested to join session but is not mapped to a user", client.getSessionId()); @@ -201,7 +201,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova SocketIOClient client, Comment comment, AckRequest ackRequest) { - final User user = userService.getUser2SocketId(client.getSessionId()); + final UserAuthentication user = userService.getUser2SocketId(client.getSessionId()); try { commentService.getAndMarkReadInternal(comment.getId(), user); } catch (NotFoundException | UnauthorizedException e) { @@ -213,7 +213,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova server.addEventListener("readFreetextAnswer", String.class, new DataListener<String>() { @Override public void onData(SocketIOClient client, String answerId, AckRequest ackRequest) { - final User user = userService.getUser2SocketId(client.getSessionId()); + final UserAuthentication user = userService.getUser2SocketId(client.getSessionId()); try { contentService.getFreetextAnswerAndMarkRead(answerId, user); } catch (NotFoundException | UnauthorizedException e) { @@ -229,7 +229,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova @Override @Timed(name = "setLearningProgressOptionsEvent.onData") public void onData(SocketIOClient client, ScoreOptions scoreOptions, AckRequest ack) { - final User user = userService.getUser2SocketId(client.getSessionId()); + final UserAuthentication user = userService.getUser2SocketId(client.getSessionId()); final String sessionKey = userService.getSessionByUsername(user.getUsername()); final de.thm.arsnova.entities.migration.v2.Session session = sessionService.getInternal(sessionKey, user); if (session.isCreator(user)) { @@ -335,7 +335,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova this.useSSL = useSSL; } - public void reportDeletedFeedback(final User user, final Set<de.thm.arsnova.entities.migration.v2.Session> arsSessions) { + public void reportDeletedFeedback(final UserAuthentication user, final Set<de.thm.arsnova.entities.migration.v2.Session> arsSessions) { final List<String> keywords = new ArrayList<>(); for (final de.thm.arsnova.entities.migration.v2.Session session : arsSessions) { keywords.add(session.getKeyword()); @@ -343,11 +343,11 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova this.sendToUser(user, "feedbackReset", keywords); } - private List<UUID> findConnectionIdForUser(final User user) { + private List<UUID> findConnectionIdForUser(final UserAuthentication user) { final List<UUID> result = new ArrayList<>(); - for (final Entry<UUID, User> e : userService.socketId2User()) { + for (final Entry<UUID, UserAuthentication> e : userService.socketId2User()) { final UUID someUsersConnectionId = e.getKey(); - final User someUser = e.getValue(); + final UserAuthentication someUser = e.getValue(); if (someUser.equals(user)) { result.add(someUsersConnectionId); } @@ -355,7 +355,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova return result; } - private void sendToUser(final User user, final String event, Object data) { + private void sendToUser(final UserAuthentication user, final String event, Object data) { final List<UUID> connectionIds = findConnectionIdForUser(user); if (connectionIds.isEmpty()) { return; @@ -371,7 +371,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova * Currently only sends the feedback data to the client. Should be used for all * relevant Socket.IO data, the client needs to know after joining a session. */ - public void reportSessionDataToClient(final String sessionKey, final User user, final SocketIOClient client) { + public void reportSessionDataToClient(final String sessionKey, final UserAuthentication user, final SocketIOClient client) { final de.thm.arsnova.entities.migration.v2.Session session = sessionService.getInternal(sessionKey, user); final SessionFeature features = sessionService.getFeatures(sessionKey); @@ -409,7 +409,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova } } - public void reportFeedbackForUserInSession(final de.thm.arsnova.entities.migration.v2.Session session, final User user) { + public void reportFeedbackForUserInSession(final de.thm.arsnova.entities.migration.v2.Session session, final UserAuthentication user) { final de.thm.arsnova.entities.Feedback fb = feedbackService.getBySessionKey(session.getKeyword()); Long averageFeedback; try { @@ -475,10 +475,10 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova * all connected clients and if send feedback, if user is in current * session */ - final Set<User> users = userService.getUsersBySessionKey(sessionKey); + final Set<UserAuthentication> users = userService.getUsersBySessionKey(sessionKey); for (final SocketIOClient c : server.getAllClients()) { - final User u = userService.getUser2SocketId(c.getSessionId()); + final UserAuthentication u = userService.getUser2SocketId(c.getSessionId()); if (u != null && users.contains(u)) { c.sendEvent(eventName, data); } diff --git a/src/test/java/de/thm/arsnova/entities/TestUser.java b/src/test/java/de/thm/arsnova/entities/TestUser.java index e92b37a23c69db959c5e6669e28093a2b1b39df9..959f1f1651789d878454045919875aed94e603df 100644 --- a/src/test/java/de/thm/arsnova/entities/TestUser.java +++ b/src/test/java/de/thm/arsnova/entities/TestUser.java @@ -19,7 +19,7 @@ package de.thm.arsnova.entities; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; -public class TestUser extends User { +public class TestUser extends UserAuthentication { private static final long serialVersionUID = 1L; public TestUser(String username) { diff --git a/src/test/java/de/thm/arsnova/services/StubUserService.java b/src/test/java/de/thm/arsnova/services/StubUserService.java index 278f02b36c469b1659dc48436a23e23ad876f7cf..471d6fc99f4a154365f39a3f5a406d3bb4f26c8e 100644 --- a/src/test/java/de/thm/arsnova/services/StubUserService.java +++ b/src/test/java/de/thm/arsnova/services/StubUserService.java @@ -17,14 +17,14 @@ */ package de.thm.arsnova.services; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.persistance.UserRepository; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; public class StubUserService extends UserServiceImpl { - private User stubUser = null; + private UserAuthentication stubUser = null; public StubUserService(UserRepository repository, JavaMailSender mailSender) { super(repository, mailSender); @@ -36,18 +36,18 @@ public class StubUserService extends UserServiceImpl { public void setUserAuthenticated(boolean isAuthenticated, String username) { if (isAuthenticated) { - stubUser = new User(new UsernamePasswordAuthenticationToken(username, "testpassword")); + stubUser = new UserAuthentication(new UsernamePasswordAuthenticationToken(username, "testpassword")); return; } stubUser = null; } public void useAnonymousUser() { - stubUser = new User(new UsernamePasswordAuthenticationToken("anonymous", "")); + stubUser = new UserAuthentication(new UsernamePasswordAuthenticationToken("anonymous", "")); } @Override - public User getCurrentUser() { + public UserAuthentication getCurrentUser() { return stubUser; } diff --git a/src/test/java/de/thm/arsnova/services/UserServiceTest.java b/src/test/java/de/thm/arsnova/services/UserServiceTest.java index 9b1f43769bfb64520e483ac5777993faa12a1354..ba5b1e755f6e6e77c6d35fbb6c8d022ab1825e74 100644 --- a/src/test/java/de/thm/arsnova/services/UserServiceTest.java +++ b/src/test/java/de/thm/arsnova/services/UserServiceTest.java @@ -21,11 +21,10 @@ import de.thm.arsnova.config.AppConfig; import de.thm.arsnova.config.TestAppConfig; import de.thm.arsnova.config.TestPersistanceConfig; import de.thm.arsnova.config.TestSecurityConfig; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import org.jasig.cas.client.authentication.AttributePrincipalImpl; import org.junit.Test; import org.junit.runner.RunWith; -import org.pac4j.oauth.profile.JsonHelper; import org.pac4j.oauth.profile.google2.Google2Email; import org.pac4j.oauth.profile.google2.Google2Profile; import org.pac4j.oauth.profile.google2.Google2ProfileDefinition; @@ -57,13 +56,13 @@ import static org.junit.Assert.assertEquals; @ActiveProfiles("test") public class UserServiceTest { - private static final ConcurrentHashMap<UUID, User> socketid2user = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap<UUID, UserAuthentication> socketid2user = new ConcurrentHashMap<>(); private static final ConcurrentHashMap<String, String> user2session = new ConcurrentHashMap<>(); @Test public void testSocket2UserPersistence() throws IOException, ClassNotFoundException { - socketid2user.put(UUID.randomUUID(), new User(new UsernamePasswordAuthenticationToken("ptsr00", UUID.randomUUID()))); - socketid2user.put(UUID.randomUUID(), new User(new AttributePrincipalImpl("ptstr0"))); + socketid2user.put(UUID.randomUUID(), new UserAuthentication(new UsernamePasswordAuthenticationToken("ptsr00", UUID.randomUUID()))); + socketid2user.put(UUID.randomUUID(), new UserAuthentication(new AttributePrincipalImpl("ptstr0"))); Google2Email email = new Google2Email(); email.setEmail("mail@host.com"); @@ -73,17 +72,17 @@ public class UserServiceTest { profile.addAttribute(Google2ProfileDefinition.DISPLAY_NAME, "ptsr00"); profile.addAttribute(Google2ProfileDefinition.EMAILS, emails); - socketid2user.put(UUID.randomUUID(), new User(profile)); + socketid2user.put(UUID.randomUUID(), new UserAuthentication(profile)); List<GrantedAuthority> authorities = new ArrayList<>(); authorities.add(new SimpleGrantedAuthority("ROLE_GUEST")); - socketid2user.put(UUID.randomUUID(), new User(new AnonymousAuthenticationToken("ptsr00", UUID.randomUUID(), authorities))); + socketid2user.put(UUID.randomUUID(), new UserAuthentication(new AnonymousAuthenticationToken("ptsr00", UUID.randomUUID(), authorities))); ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream objOut = new ObjectOutputStream(out); objOut.writeObject(socketid2user); objOut.close(); ObjectInputStream objIn = new ObjectInputStream(new ByteArrayInputStream(out.toByteArray())); - Map<UUID, User> actual = (Map<UUID, User>) objIn.readObject(); + Map<UUID, UserAuthentication> actual = (Map<UUID, UserAuthentication>) objIn.readObject(); assertEquals(actual, socketid2user); } diff --git a/src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java b/src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java index d46874fc7d0a7f5e82cc50fddd981bf06faa34cf..9e77a20b446816674585e794024ba07b4f93623a 100644 --- a/src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java +++ b/src/test/java/de/thm/arsnova/services/score/QuestionBasedScoreCalculatorTest.java @@ -18,12 +18,9 @@ package de.thm.arsnova.services.score; import de.thm.arsnova.entities.TestUser; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.ScoreStatistics; import de.thm.arsnova.persistance.SessionStatisticsRepository; -import de.thm.arsnova.services.score.QuestionBasedScoreCalculator; -import de.thm.arsnova.services.score.Score; -import de.thm.arsnova.services.score.VariantScoreCalculator; import org.junit.Before; import org.junit.Test; @@ -45,7 +42,7 @@ public class QuestionBasedScoreCalculatorTest { return questionId; } - private void addAnswer(String questionId, User user, int points) { + private void addAnswer(String questionId, UserAuthentication user, int points) { final int piRound = 1; courseScore.addAnswer(questionId, piRound, user.getUsername(), points); } @@ -65,7 +62,7 @@ public class QuestionBasedScoreCalculatorTest { public void shouldIgnoreQuestionsWithoutCorrectAnswers() { final int questionMaxValue = 0; final int userScore = 0; - User user = new TestUser("username"); + UserAuthentication user = new TestUser("username"); String questionId = this.addQuestion("lecture", questionMaxValue); this.addAnswer(questionId, user, userScore); @@ -80,7 +77,7 @@ public class QuestionBasedScoreCalculatorTest { @Test public void shouldIgnoreQuestionsWithoutCorrectAnswersInQuestionCount() { - User user = new TestUser("username"); + UserAuthentication user = new TestUser("username"); courseScore.addQuestion("question-without-correct-answers", "lecture", 1, 0); courseScore.addQuestion("question-with-correct-answers", "lecture", 1, 50); courseScore.addAnswer("question-without-correct-answers", 1, user.getUsername(), 0); @@ -123,8 +120,8 @@ public class QuestionBasedScoreCalculatorTest { String q1 = this.addQuestion("lecture", 10); String q2 = this.addQuestion("lecture", 10); // two users - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); // four answers, last one is wrong this.addAnswer(q1, u1, 10); this.addAnswer(q1, u2, 10); @@ -159,8 +156,8 @@ public class QuestionBasedScoreCalculatorTest { public void shouldFilterBasedOnQuestionVariant() { String q1 = this.addQuestion("lecture", 100); String q2 = this.addQuestion("preparation", 100); - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); // first question is answered correctly, second one is not this.addAnswer(q1, u1, 100); this.addAnswer(q1, u2, 100); @@ -182,8 +179,8 @@ public class QuestionBasedScoreCalculatorTest { @Test public void shouldConsiderAnswersOfSamePiRound() { - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); // question is in round 2 courseScore.addQuestion("q1", "lecture", 2, 100); // 25 points in round 1, 75 points in round two for the first user @@ -209,9 +206,9 @@ public class QuestionBasedScoreCalculatorTest { String q1 = this.addQuestion("lecture", 10); String q2 = this.addQuestion("lecture", 10); // three users - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); - User u3 = new TestUser("user3"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); + UserAuthentication u3 = new TestUser("user3"); // six answers this.addAnswer(q1, u1, 10); this.addAnswer(q2, u1, -100); diff --git a/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java b/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java index 0909300b0764d1f9dccb9eaef42acf8163610e2f..673a79eaa4ba811b6ec0484360e3bd061e1d83a2 100644 --- a/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java +++ b/src/test/java/de/thm/arsnova/services/score/ScoreBasedScoreCalculatorTest.java @@ -18,12 +18,9 @@ package de.thm.arsnova.services.score; import de.thm.arsnova.entities.TestUser; -import de.thm.arsnova.entities.User; +import de.thm.arsnova.entities.UserAuthentication; import de.thm.arsnova.entities.transport.ScoreStatistics; import de.thm.arsnova.persistance.SessionStatisticsRepository; -import de.thm.arsnova.services.score.Score; -import de.thm.arsnova.services.score.ScoreBasedScoreCalculator; -import de.thm.arsnova.services.score.VariantScoreCalculator; import org.junit.Before; import org.junit.Test; @@ -45,7 +42,7 @@ public class ScoreBasedScoreCalculatorTest { return questionId; } - private void addAnswer(String questionId, User user, int points) { + private void addAnswer(String questionId, UserAuthentication user, int points) { final int piRound = 1; courseScore.addAnswer(questionId, piRound, user.getUsername(), points); } @@ -62,8 +59,8 @@ public class ScoreBasedScoreCalculatorTest { public void shouldFilterBasedOnQuestionVariant() { String q1 = this.addQuestion("lecture", 100); String q2 = this.addQuestion("preparation", 100); - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); // first question is answered correctly, second one is not this.addAnswer(q1, u1, 100); this.addAnswer(q1, u2, 100); @@ -89,8 +86,8 @@ public class ScoreBasedScoreCalculatorTest { String q1 = this.addQuestion("lecture", 100); String q2 = this.addQuestion("lecture", 100); String q3 = this.addQuestion("lecture", 100); - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); // Both users achieve 200 points this.addAnswer(q1, u1, 100); this.addAnswer(q1, u2, 100); @@ -108,8 +105,8 @@ public class ScoreBasedScoreCalculatorTest { @Test public void shouldConsiderAnswersOfSamePiRound() { - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); // question is in round 2 courseScore.addQuestion("q1", "lecture", 2, 100); // 25 points in round 1, 75 points in round two for the first user @@ -135,9 +132,9 @@ public class ScoreBasedScoreCalculatorTest { String q1 = this.addQuestion("lecture", 10); String q2 = this.addQuestion("lecture", 10); // three users - User u1 = new TestUser("user1"); - User u2 = new TestUser("user2"); - User u3 = new TestUser("user3"); + UserAuthentication u1 = new TestUser("user1"); + UserAuthentication u2 = new TestUser("user2"); + UserAuthentication u3 = new TestUser("user3"); // six answers this.addAnswer(q1, u1, 10); this.addAnswer(q2, u1, 0);