aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar Vitaly Takmazov2023-04-26 09:34:29 +0300
committerGravatar Vitaly Takmazov2023-04-26 09:34:29 +0300
commitfc5f8e888c9ccfda7d739493c439437a917b9902 (patch)
treecb89cdb606b3296ef20c97b749a50d447b0d4a70 /src/main/java/com
parent90201606bb485988f5a85cd578f3f5b8ecddf4db (diff)
Expose 'isAdmin' user property over API
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/juick/model/Message.java2
-rw-r--r--src/main/java/com/juick/model/User.java12
-rw-r--r--src/main/java/com/juick/service/UserService.java2
-rw-r--r--src/main/java/com/juick/service/UserServiceImpl.java6
-rw-r--r--src/main/java/com/juick/service/security/JuickUserDetailsService.java4
-rw-r--r--src/main/java/com/juick/www/api/Messages.java4
-rw-r--r--src/main/java/com/juick/www/api/Users.java4
7 files changed, 20 insertions, 14 deletions
diff --git a/src/main/java/com/juick/model/Message.java b/src/main/java/com/juick/model/Message.java
index 3c86970b..32d888a7 100644
--- a/src/main/java/com/juick/model/Message.java
+++ b/src/main/java/com/juick/model/Message.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2020, Juick
+ * Copyright (C) 2008-2023, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
diff --git a/src/main/java/com/juick/model/User.java b/src/main/java/com/juick/model/User.java
index 5f89ecfc..7f04a744 100644
--- a/src/main/java/com/juick/model/User.java
+++ b/src/main/java/com/juick/model/User.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2020, Juick
+ * Copyright (C) 2008-2023, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -62,6 +62,8 @@ public class User implements Serializable {
private String description;
private final List<TagStats> tagStats;
private boolean premium;
+ @XmlTransient
+ private boolean admin;
public User() {
tokens = new ArrayList<>();
@@ -288,4 +290,12 @@ public class User implements Serializable {
public void setPremium(boolean premium) {
this.premium = premium;
}
+
+ public boolean isAdmin() {
+ return admin;
+ }
+
+ public void setAdmin(boolean admin) {
+ this.admin = admin;
+ }
}
diff --git a/src/main/java/com/juick/service/UserService.java b/src/main/java/com/juick/service/UserService.java
index 53acdfab..0cbe104f 100644
--- a/src/main/java/com/juick/service/UserService.java
+++ b/src/main/java/com/juick/service/UserService.java
@@ -123,8 +123,6 @@ public interface UserService {
void updateLastSeen(User user);
- boolean isAdminUser(User user);
-
Optional<ExternalToken> getTwitterToken(int uid);
@CacheEvict(value = "twitter_user", key="{ #uid }")
diff --git a/src/main/java/com/juick/service/UserServiceImpl.java b/src/main/java/com/juick/service/UserServiceImpl.java
index a7ea5c5f..442bd03c 100644
--- a/src/main/java/com/juick/service/UserServiceImpl.java
+++ b/src/main/java/com/juick/service/UserServiceImpl.java
@@ -66,6 +66,7 @@ public class UserServiceImpl extends BaseJdbcService implements UserService {
}
user.setVerified(rs.getLong(6) > 0);
user.setPremium(rs.getInt(7) > 0);
+ user.setAdmin(adminUsers.contains(user.getName()));
return user;
}
}
@@ -595,11 +596,6 @@ public class UserServiceImpl extends BaseJdbcService implements UserService {
getJdbcTemplate().update("UPDATE users SET last_seen=? WHERE id=?", toDateTime(Instant.now().atOffset(ZoneOffset.UTC)), user.getUid());
}
- @Override
- public boolean isAdminUser(User user) {
- return adminUsers.contains(user.getName());
- }
-
@Transactional(readOnly = true)
@Override
public Optional<ExternalToken> getTwitterToken(final int uid) {
diff --git a/src/main/java/com/juick/service/security/JuickUserDetailsService.java b/src/main/java/com/juick/service/security/JuickUserDetailsService.java
index e64a0c8e..9371b863 100644
--- a/src/main/java/com/juick/service/security/JuickUserDetailsService.java
+++ b/src/main/java/com/juick/service/security/JuickUserDetailsService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2020, Juick
+ * Copyright (C) 2008-2023, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -49,7 +49,7 @@ public class JuickUserDetailsService implements UserDetailsService {
if (!user.isAnonymous()) {
user.setAuthHash(userService.getHashByUID(user.getUid()));
- List<GrantedAuthority> authorities = userService.isAdminUser(user) ?
+ List<GrantedAuthority> authorities = user.isAdmin() ?
JuickUser.ADMIN_AUTHORITY : JuickUser.USER_AUTHORITY;
return new JuickUser(user, authorities);
}
diff --git a/src/main/java/com/juick/www/api/Messages.java b/src/main/java/com/juick/www/api/Messages.java
index ef55944b..969bef4f 100644
--- a/src/main/java/com/juick/www/api/Messages.java
+++ b/src/main/java/com/juick/www/api/Messages.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2021, Juick
+ * Copyright (C) 2008-2023, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -212,7 +212,7 @@ public class Messages {
}
@PostMapping("/api/messages/set_privacy")
public void togglePrivacy(@Parameter(hidden = true) User visitor, @RequestParam Integer mid) {
- if (visitor.isPremium() || userService.isAdminUser(visitor)) {
+ if (visitor.isPremium() || visitor.isAdmin()) {
var msg = messagesService.getMessage(mid).orElseThrow(HttpNotFoundException::new);
messagesService.setFriendsOnly(mid, !msg.isFriendsOnly());
msg = messagesService.getMessage(mid).orElseThrow(HttpNotFoundException::new);
diff --git a/src/main/java/com/juick/www/api/Users.java b/src/main/java/com/juick/www/api/Users.java
index 19075fe5..4fb53ca1 100644
--- a/src/main/java/com/juick/www/api/Users.java
+++ b/src/main/java/com/juick/www/api/Users.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2020, Juick
+ * Copyright (C) 2008-2023, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -110,6 +110,8 @@ public class Users {
me.setReaders(readers);
me.setAvatar(webApp.getAvatarUrl(visitor));
me.getTagStats().addAll(tagService.getUserTagStats(me.getUid()));
+ me.setPremium(visitor.isPremium());
+ me.setAdmin(visitor.isAdmin());
return (SecureUser)userService.getUserInfo(me);
}
@PostMapping("/api/me")