From 8a0fbbd35c13054a947ea0d27ca117542bc452b9 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 18 May 2018 15:33:38 +0300 Subject: JPA WIP --- .../main/java/com/juick/server/EmailManager.java | 10 +++---- .../java/com/juick/server/TelegramBotManager.java | 20 ++++++------- .../main/java/com/juick/server/TwitterManager.java | 4 +-- .../main/java/com/juick/server/XMPPConnection.java | 21 +++++--------- .../src/main/java/com/juick/server/api/PM.java | 12 ++++---- .../java/com/juick/server/api/SocialLogin.java | 33 ++++++++++++---------- .../src/main/java/com/juick/server/api/Users.java | 2 +- 7 files changed, 47 insertions(+), 55 deletions(-) (limited to 'juick-server/src/main/java/com/juick/server') diff --git a/juick-server/src/main/java/com/juick/server/EmailManager.java b/juick-server/src/main/java/com/juick/server/EmailManager.java index 66e84358..8e07f7d3 100644 --- a/juick-server/src/main/java/com/juick/server/EmailManager.java +++ b/juick-server/src/main/java/com/juick/server/EmailManager.java @@ -50,19 +50,19 @@ public class EmailManager implements ApplicationListener { } if (MessageUtils.isPM(msg)) { String subject = String.format("Private message from %s", msg.getUser().getName()); - emailService.getEmails(msg.getTo().getUid(), true).forEach(email -> { + emailService.getEmails(msg.getTo(), true).forEach(email -> { emailNotify(email, subject, msg); }); } else if (MessageUtils.isReply(msg)) { Message originalMessage = messagesService.getMessage(msg.getMid()); String subject = String.format("New reply to %s", originalMessage.getUser().getName()); subscribedUsers.stream() - .flatMap(user -> emailService.getEmails(user.getUid(), true).stream()) + .flatMap(user -> emailService.getEmails(user, true).stream()) .forEach(email -> emailNotify(email, subject, msg)); } else { String subject = String.format("New message from %s", msg.getUser().getName()); subscribedUsers - .forEach(user -> emailService.getEmails(user.getUid(), true) + .forEach(user -> emailService.getEmails(user, true) .forEach(email -> emailNotify(email, subject, msg))); } } @@ -96,7 +96,7 @@ public class EmailManager implements ApplicationListener { ", discussion or tag. Reply to this email directly or view it on Juick: %s.", formatPost(msg), formatUrl(msg)); MimeBodyPart textBodyPart = new MimeBodyPart(); - String hash = userService.getHashByUID(userService.getUserByEmail(email).getUid()); + String hash = userService.getHashForUser(userService.getUserByEmail(email)); textBodyPart.setContent(plainText, "text/plain; charset=UTF-8"); String htmlText = String.format("%s

--
You are receiving this because you are subscribed to this user" + ", discussion or tag. Reply to this email directly or view it on Juick." + @@ -110,7 +110,7 @@ public class EmailManager implements ApplicationListener { multipart.addBodyPart(htmlBodyPart); message.setContent(multipart); message.setHeader("List-Unsubscribe", String.format("https://juick.com/settings?hash=%s", - userService.getHashByUID(userService.getUserByEmail(email).getUid()))); + userService.getHashForUser(userService.getUserByEmail(email)))); message.saveChanges(); transport.connect(); transport.sendMessage(message, message.getAllRecipients()); diff --git a/juick-server/src/main/java/com/juick/server/TelegramBotManager.java b/juick-server/src/main/java/com/juick/server/TelegramBotManager.java index 3c3fbc9f..c47493b4 100644 --- a/juick-server/src/main/java/com/juick/server/TelegramBotManager.java +++ b/juick-server/src/main/java/com/juick/server/TelegramBotManager.java @@ -112,7 +112,7 @@ public class TelegramBotManager implements NotificationListener { return; } } - User user_from = userService.getUserByUID(telegramService.getUser(message.chat().id())).orElse(AnonymousUser.INSTANCE); + User user_from = telegramService.getUser(message.chat().id()); logger.info("Found juick user {}", user_from.getUid()); List chats = telegramService.getChats(); @@ -161,7 +161,7 @@ public class TelegramBotManager implements NotificationListener { || text.equalsIgnoreCase("/logout") || text.equalsIgnoreCase("/start") || text.equalsIgnoreCase("/help")) { - String msgUrl = "http://juick.com/login?hash=" + userService.getHashByUID(user_from.getUid()); + String msgUrl = "http://juick.com/login?hash=" + userService.getHashForUser(user_from); String msg = String.format("Hi, %s!\nYou can post messages and images to Juick there.\n" + "Tap to [log into website](%s) to get more info", user_from.getName(), msgUrl); telegramNotify(message.from().id().longValue(), msg, new com.juick.Message()); @@ -275,7 +275,7 @@ public class TelegramBotManager implements NotificationListener { } private void processTelegramResponse(Long chatId, SendResponse response, com.juick.Message source) { - int userId = telegramService.getUser(chatId); + User user = telegramService.getUser(chatId); if (!response.isOk()) { if (response.errorCode() == 403) { // remove from anonymous chat @@ -285,11 +285,9 @@ public class TelegramBotManager implements NotificationListener { logger.info("deleted {} chat", d); } ); - if (userId > 0) { - User userToDelete = userService.getUserByUID(userId) - .orElseThrow(IllegalStateException::new); - boolean status = telegramService.deleteTelegramUser(userToDelete.getUid()); - logger.info("deleting telegram id of @{} : {}", userToDelete.getName(), status); + if (!user.isAnonymous()) { + boolean status = telegramService.deleteTelegramUser(user.getUid()); + logger.info("deleting telegram id of @{} : {}", user.getName(), status); boolean chatStatus = telegramService.deleteChat(chatId); logger.info("deleting telegram chat {} : {}", chatId, chatStatus); } @@ -299,9 +297,7 @@ public class TelegramBotManager implements NotificationListener { } } else { if (MessageUtils.isReply(source)) { - messagesService.setLastReadComment(userService.getUserByUID(userId) - .orElseThrow(IllegalStateException::new), source.getMid(), source.getRid()); - User user = userService.getUserByUID(userId).orElseThrow(IllegalStateException::new); + messagesService.setLastReadComment(user, source.getMid(), source.getRid()); applicationEventPublisher.publishEvent(new MessageReadEvent(this, user, source)); } } @@ -350,7 +346,7 @@ public class TelegramBotManager implements NotificationListener { users.forEach(c -> telegramNotify(c, msg, jmsg)); // anonymous - chats.stream().filter(u -> telegramService.getUser(u) == 0).forEach(c -> telegramNotify(c, msg, jmsg)); + chats.stream().filter(u -> telegramService.getUser(u).isAnonymous()).forEach(c -> telegramNotify(c, msg, jmsg)); } } @Override diff --git a/juick-server/src/main/java/com/juick/server/TwitterManager.java b/juick-server/src/main/java/com/juick/server/TwitterManager.java index 9b83b197..1f958313 100644 --- a/juick-server/src/main/java/com/juick/server/TwitterManager.java +++ b/juick-server/src/main/java/com/juick/server/TwitterManager.java @@ -50,7 +50,7 @@ public class TwitterManager implements NotificationListener { private String twitter_consumer_secret; void twitterPost(final com.juick.Message jmsg) { - crosspostService.getTwitterToken(jmsg.getUser().getUid()).ifPresent(t -> { + crosspostService.getTwitterToken(jmsg.getUser()).ifPresent(t -> { String status = MessageUtils.getMessageHashTags(jmsg) + StringUtils.defaultString(jmsg.getText()); if (status.length() > 253) { status = status.substring(0, 252) + "…"; @@ -77,7 +77,7 @@ public class TwitterManager implements NotificationListener { if (MessageUtils.isPM(msg) || MessageUtils.isReply(msg) || msg.isService()) { return; } - if (StringUtils.isNotEmpty(crosspostService.getTwitterName(msg.getUser().getUid()))) { + if (StringUtils.isNotEmpty(crosspostService.getTwitterName(msg.getUser()))) { if (msg.getTags().stream().noneMatch(t -> t.getName().equals("notwitter"))) { twitterPost(msg); } diff --git a/juick-server/src/main/java/com/juick/server/XMPPConnection.java b/juick-server/src/main/java/com/juick/server/XMPPConnection.java index 12e66d40..32b5a552 100644 --- a/juick-server/src/main/java/com/juick/server/XMPPConnection.java +++ b/juick-server/src/main/java/com/juick/server/XMPPConnection.java @@ -363,7 +363,7 @@ public class XMPPConnection implements StanzaListener, NotificationListener { Message mm = new Message(); mm.setTo(Jid.of(userJid)); mm.setType(Message.Type.CHAT); - boolean inroster = pmQueriesService.havePMinRoster(msg.getUser().getUid(), userJid); + boolean inroster = pmQueriesService.havePMinRoster(msg.getUser(), userJid); if (inroster) { mm.setFrom(Jid.of(msg.getUser().getName(), "juick.com", "Juick")); mm.setBody(msg.getText()); @@ -463,7 +463,7 @@ public class XMPPConnection implements StanzaListener, NotificationListener { private void incomingPresence(Presence p) { final String username = p.getTo().getLocal(); final boolean toJuick = username.equals(jid.getLocal()); - + User toUser = userService.getUserByName(username); if (p.getType() == null) { Presence reply = new Presence(); reply.setFrom(p.getTo().asBareJid()); @@ -471,12 +471,7 @@ public class XMPPConnection implements StanzaListener, NotificationListener { reply.setType(Presence.Type.UNSUBSCRIBE); router.send(ClientPresence.from(reply)); } else if (p.getType().equals(Presence.Type.PROBE)) { - int uid_to = 0; - if (!toJuick) { - uid_to = userService.getUIDbyName(username); - } - - if (toJuick || uid_to > 0) { + if (toJuick || !toUser.isAnonymous()) { Presence reply = new Presence(); reply.setFrom(p.getTo().withResource(jid.getResource())); reply.setTo(p.getFrom()); @@ -499,9 +494,8 @@ public class XMPPConnection implements StanzaListener, NotificationListener { if (toJuick) { canSubscribe = true; } else { - int uid_to = userService.getUIDbyName(username); - if (uid_to > 0) { - pmQueriesService.addPMinRoster(uid_to, p.getFrom().asBareJid().toEscapedString()); + if (!toUser.isAnonymous()) { + pmQueriesService.addPMinRoster(toUser, p.getFrom().asBareJid().toEscapedString()); canSubscribe = true; } } @@ -527,9 +521,8 @@ public class XMPPConnection implements StanzaListener, NotificationListener { } } else if (p.getType().equals(Presence.Type.UNSUBSCRIBE)) { if (!toJuick) { - int uid_to = userService.getUIDbyName(username); - if (uid_to > 0) { - pmQueriesService.removePMinRoster(uid_to, p.getFrom().asBareJid().toEscapedString()); + if (!toUser.isAnonymous()) { + pmQueriesService.removePMinRoster(toUser, p.getFrom().asBareJid().toEscapedString()); } } diff --git a/juick-server/src/main/java/com/juick/server/api/PM.java b/juick-server/src/main/java/com/juick/server/api/PM.java index cbd70bed..0985e7c4 100644 --- a/juick-server/src/main/java/com/juick/server/api/PM.java +++ b/juick-server/src/main/java/com/juick/server/api/PM.java @@ -54,16 +54,16 @@ public class PM { if (visitor.isAnonymous()) { throw new HttpForbiddenException(); } - int uid = 0; + User user = AnonymousUser.INSTANCE; if (uname != null && uname.matches("^[a-zA-Z0-9\\-]{2,16}$")) { - uid = userService.getUIDbyName(uname); + user = userService.getUserByName(uname); } - if (uid == 0) { + if (user.getUid() == 0) { throw new HttpBadRequestException(); } - return pmQueriesService.getPMMessages(visitor.getUid(), uid); + return pmQueriesService.getPMMessages(visitor, user); } @RequestMapping(value = "/pm", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) @@ -87,7 +87,7 @@ public class PM { throw new HttpForbiddenException(); } - if (pmQueriesService.createPM(visitor.getUid(), userTo.getUid(), body)) { + if (pmQueriesService.createPM(visitor, userTo, body)) { com.juick.Message jmsg = new com.juick.Message(); jmsg.setUser(visitor); jmsg.setText(body); @@ -112,7 +112,7 @@ public class PM { cnt = 10; } - List lastconv = pmQueriesService.getPMLastConversationsUsers(visitor.getUid(), cnt); + List lastconv = pmQueriesService.getPMLastConversationsUsers(visitor, cnt); PrivateChats pms = new PrivateChats(); pms.setUsers(lastconv); return pms; diff --git a/juick-server/src/main/java/com/juick/server/api/SocialLogin.java b/juick-server/src/main/java/com/juick/server/api/SocialLogin.java index dc7425e1..195d1217 100644 --- a/juick-server/src/main/java/com/juick/server/api/SocialLogin.java +++ b/juick-server/src/main/java/com/juick/server/api/SocialLogin.java @@ -25,6 +25,7 @@ import com.github.scribejava.core.model.OAuthRequest; import com.github.scribejava.core.model.Verb; import com.github.scribejava.core.oauth.OAuth20Service; import com.juick.facebook.User; +import com.juick.server.helpers.AnonymousUser; import com.juick.server.util.HttpBadRequestException; import com.juick.service.CrosspostService; import com.juick.service.EmailService; @@ -44,6 +45,8 @@ import org.springframework.web.util.UriComponentsBuilder; import javax.annotation.PostConstruct; import javax.inject.Inject; import java.io.IOException; +import java.util.Map; +import java.util.Optional; import java.util.UUID; import java.util.concurrent.ExecutionException; @@ -137,22 +140,22 @@ public class SocialLogin { throw new HttpBadRequestException(); } - int uid = crosspostService.getUIDbyFBID(fbID); - if (uid > 0) { + com.juick.User user = crosspostService.getUserByFBID(fbID).orElse(AnonymousUser.INSTANCE); + if (!user.isAnonymous()) { if (!crosspostService.updateFacebookUser(fbID, token.getAccessToken(), fb.getName(), fb.getLink())) { logger.error("error updating facebook user, id: {}, token: {}", fbID, token.getAccessToken()); throw new HttpBadRequestException(); } UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(redirectUrl); - uriComponentsBuilder.queryParam("hash", userService.getHashByUID(uid)); + uriComponentsBuilder.queryParam("hash", userService.getHashForUser(user)); return "redirect:" + uriComponentsBuilder.build().toUriString(); } else if (fb.getVerified()) { if (!crosspostService.createFacebookUser(fbID, state, token.getAccessToken(), fb.getName(), fb.getLink())) { if (StringUtils.isNotEmpty(fb.getEmail())) { logger.info("found {} for facebook user {}", fb.getEmail(), fb.getLink()); - Integer userId = crosspostService.getUIDbyFBID(fbID); - if (!emailService.getEmails(userId, false).contains(fb.getEmail())) { - emailService.addEmail(userId, fb.getEmail()); + user = crosspostService.getUserByFBID(fbID).orElse(AnonymousUser.INSTANCE); + if (!emailService.getEmails(user, false).contains(fb.getEmail())) { + emailService.addEmail(user, fb.getEmail()); } } logger.info("email not found for facebook user {}", fb.getLink()); @@ -254,10 +257,10 @@ public class SocialLogin { } Long vkID = NumberUtils.toLong(jsonUser.getId(), 0); - int uid = crosspostService.getUIDbyVKID(vkID); - if (uid > 0) { + com.juick.User vkUser = crosspostService.getUserByVKID(vkID).orElse(AnonymousUser.INSTANCE); + if (!vkUser.isAnonymous()) { UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromUriString(redirectUrl); - uriComponentsBuilder.queryParam("hash", userService.getHashByUID(uid)); + uriComponentsBuilder.queryParam("hash", userService.getHashForUser(vkUser)); return "redirect:" + uriComponentsBuilder.build().toUriString(); } else { String loginhash = UUID.randomUUID().toString(); @@ -282,17 +285,17 @@ public class SocialLogin { byte[] secretKey = DigestUtils.sha256(telegramToken); String resultString = new HmacUtils(HmacAlgorithms.HMAC_SHA_256, secretKey).hmacHex(dataCheckString); if (hash.equals(resultString)) { - Long tgUser = Long.valueOf(params.get("id")); - int uid = telegramService.getUser(tgUser); - if (uid > 0) { - Cookie c = new Cookie("hash", userService.getHashByUID(uid)); + Long tgUserId = Long.valueOf(params.get("id")); + com.juick.User tgUser = telegramService.getUser(tgUserId); + if (!tgUser.isAnonymous()) { + Cookie c = new Cookie("hash", userService.getHashForUser(tgUser)); c.setMaxAge(50 * 24 * 60 * 60); response.addCookie(c); return Utils.getPreviousPageByRequest(request).orElse("redirect:/"); } else { String username = StringUtils.defaultString(params.get("username"), params.get("first_name")); - telegramService.createTelegramUser(tgUser, username); - return "redirect:/signup?type=durov&hash=" + userService.getSignUpHashByTelegramID(tgUser, username); + telegramService.createTelegramUser(tgUserId, username); + return "redirect:/signup?type=durov&hash=" + userService.getSignUpHashByTelegramID(tgUserId, username); } } else { logger.warn("invalid tg hash {} for {}", resultString, hash); diff --git a/juick-server/src/main/java/com/juick/server/api/Users.java b/juick-server/src/main/java/com/juick/server/api/Users.java index 41deddb8..53d49e5b 100644 --- a/juick-server/src/main/java/com/juick/server/api/Users.java +++ b/juick-server/src/main/java/com/juick/server/api/Users.java @@ -46,7 +46,7 @@ public class Users { @ApiOperation(value = "This returns user token", notes = "Pass login and password using HTTP Basic") @RequestMapping(value = "/auth", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) public String getAuthToken() { - return userService.getHashByUID(UserUtils.getCurrentUser().getUid()); + return userService.getHashForUser(UserUtils.getCurrentUser()); } @RequestMapping(value = "/users", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_UTF8_VALUE) -- cgit v1.2.3