aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick/server')
-rw-r--r--juick-server/src/main/java/com/juick/server/EmailManager.java10
-rw-r--r--juick-server/src/main/java/com/juick/server/TelegramBotManager.java20
-rw-r--r--juick-server/src/main/java/com/juick/server/TwitterManager.java4
-rw-r--r--juick-server/src/main/java/com/juick/server/XMPPConnection.java21
-rw-r--r--juick-server/src/main/java/com/juick/server/api/PM.java12
-rw-r--r--juick-server/src/main/java/com/juick/server/api/SocialLogin.java33
-rw-r--r--juick-server/src/main/java/com/juick/server/api/Users.java2
7 files changed, 47 insertions, 55 deletions
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<MessageEvent> {
}
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<MessageEvent> {
", 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<br /><br />--<br />You are receiving this because you are subscribed to this user" +
", discussion or tag. Reply to this email directly or <a href=\"%s\"><img src=\"https://api.juick.com/thread/mark_read/%d-%d.gif?hash=%s\" />view it</a> on Juick." +
@@ -110,7 +110,7 @@ public class EmailManager implements ApplicationListener<MessageEvent> {
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<Long> 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<User> lastconv = pmQueriesService.getPMLastConversationsUsers(visitor.getUid(), cnt);
+ List<User> 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)