Fixed using admin connection for all users

This commit is contained in:
Andrey Terentev 2024-03-30 09:42:23 +07:00
parent 222de8709b
commit 6cb1b91e05
6 changed files with 35 additions and 9 deletions

View File

@ -8,6 +8,7 @@ import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver; import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
import lombok.Getter; import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -16,6 +17,7 @@ import ru.dragonestia.picker.api.model.node.INode;
import ru.dragonestia.picker.cp.component.RoomList; import ru.dragonestia.picker.cp.component.RoomList;
import ru.dragonestia.picker.cp.component.NavPath; import ru.dragonestia.picker.cp.component.NavPath;
import ru.dragonestia.picker.cp.component.RegisterRoom; import ru.dragonestia.picker.cp.component.RegisterRoom;
import ru.dragonestia.picker.cp.service.SecurityService;
import ru.dragonestia.picker.cp.util.RouteParamsExtractor; import ru.dragonestia.picker.cp.util.RouteParamsExtractor;
@Getter @Getter
@ -25,13 +27,19 @@ import ru.dragonestia.picker.cp.util.RouteParamsExtractor;
@Route(value = "/nodes/:nodeId", layout = MainLayout.class) @Route(value = "/nodes/:nodeId", layout = MainLayout.class)
public class NodeDetailsPage extends VerticalLayout implements BeforeEnterObserver { public class NodeDetailsPage extends VerticalLayout implements BeforeEnterObserver {
private final RoomPickerClient client; private final SecurityService securityService;
private final RouteParamsExtractor paramsExtractor; private final RouteParamsExtractor paramsExtractor;
private RoomPickerClient client;
private INode node; private INode node;
private RegisterRoom registerRoom; private RegisterRoom registerRoom;
private RoomList roomList; private RoomList roomList;
@PostConstruct
void postConstruct() {
client = securityService.getAuthenticatedAccount().getClient();
}
@Override @Override
public void beforeEnter(BeforeEnterEvent event) { public void beforeEnter(BeforeEnterEvent event) {
node = paramsExtractor.extractNode(event); node = paramsExtractor.extractNode(event);

View File

@ -8,7 +8,6 @@ import com.vaadin.flow.router.RouteAlias;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import ru.dragonestia.picker.api.exception.ApiException; import ru.dragonestia.picker.api.exception.ApiException;
import ru.dragonestia.picker.api.impl.RoomPickerClient;
import ru.dragonestia.picker.api.repository.NodeRepository; import ru.dragonestia.picker.api.repository.NodeRepository;
import ru.dragonestia.picker.cp.component.NavPath; import ru.dragonestia.picker.cp.component.NavPath;
import ru.dragonestia.picker.cp.component.NodeList; import ru.dragonestia.picker.cp.component.NodeList;
@ -25,8 +24,8 @@ public class NodesPage extends VerticalLayout {
private final NodeList nodeList; private final NodeList nodeList;
@Autowired @Autowired
public NodesPage(RoomPickerClient client, SecurityService securityService) { public NodesPage(SecurityService securityService) {
this.nodeRepository = client.getNodeRepository(); this.nodeRepository = securityService.getAuthenticatedAccount().getClient().getNodeRepository();
add(NavPath.rootNodes()); add(NavPath.rootNodes());

View File

@ -13,6 +13,7 @@ import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver; import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import ru.dragonestia.picker.api.impl.RoomPickerClient; import ru.dragonestia.picker.api.impl.RoomPickerClient;
@ -25,6 +26,7 @@ import ru.dragonestia.picker.cp.component.AddUsers;
import ru.dragonestia.picker.cp.component.NavPath; import ru.dragonestia.picker.cp.component.NavPath;
import ru.dragonestia.picker.cp.component.Notifications; import ru.dragonestia.picker.cp.component.Notifications;
import ru.dragonestia.picker.cp.component.UserList; import ru.dragonestia.picker.cp.component.UserList;
import ru.dragonestia.picker.cp.service.SecurityService;
import ru.dragonestia.picker.cp.util.RouteParamsExtractor; import ru.dragonestia.picker.cp.util.RouteParamsExtractor;
import java.util.Collection; import java.util.Collection;
@ -37,15 +39,21 @@ import java.util.stream.Collectors;
@Route(value = "/nodes/:nodeId/rooms/:roomId", layout = MainLayout.class) @Route(value = "/nodes/:nodeId/rooms/:roomId", layout = MainLayout.class)
public class RoomDetailsPage extends VerticalLayout implements BeforeEnterObserver { public class RoomDetailsPage extends VerticalLayout implements BeforeEnterObserver {
private final RoomPickerClient client; private final SecurityService securityService;
private final RouteParamsExtractor paramsExtractor; private final RouteParamsExtractor paramsExtractor;
private RoomPickerClient client;
private INode node; private INode node;
private ResponseRoom room; private ResponseRoom room;
private UserList userList; private UserList userList;
private Button lockRoomButton; private Button lockRoomButton;
private VerticalLayout roomInfo; private VerticalLayout roomInfo;
@PostConstruct
void postConstruct() {
client = securityService.getAuthenticatedAccount().getClient();
}
@Override @Override
public void beforeEnter(BeforeEnterEvent event) { public void beforeEnter(BeforeEnterEvent event) {
node = paramsExtractor.extractNode(event); node = paramsExtractor.extractNode(event);

View File

@ -11,6 +11,7 @@ import com.vaadin.flow.router.BeforeEnterEvent;
import com.vaadin.flow.router.BeforeEnterObserver; import com.vaadin.flow.router.BeforeEnterObserver;
import com.vaadin.flow.router.PageTitle; import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import ru.dragonestia.picker.api.impl.RoomPickerClient; import ru.dragonestia.picker.api.impl.RoomPickerClient;
@ -19,6 +20,7 @@ import ru.dragonestia.picker.api.model.room.ShortResponseRoom;
import ru.dragonestia.picker.api.model.user.IUser; import ru.dragonestia.picker.api.model.user.IUser;
import ru.dragonestia.picker.api.repository.query.user.FindRoomsLinkedWithUser; import ru.dragonestia.picker.api.repository.query.user.FindRoomsLinkedWithUser;
import ru.dragonestia.picker.cp.component.RefreshableTable; import ru.dragonestia.picker.cp.component.RefreshableTable;
import ru.dragonestia.picker.cp.service.SecurityService;
import ru.dragonestia.picker.cp.util.RouteParamsExtractor; import ru.dragonestia.picker.cp.util.RouteParamsExtractor;
import java.util.List; import java.util.List;
@ -30,11 +32,18 @@ import java.util.Objects;
@Route(value = "/users/:userId", layout = MainLayout.class) @Route(value = "/users/:userId", layout = MainLayout.class)
public class UserDetailsPage extends VerticalLayout implements BeforeEnterObserver, RefreshableTable { public class UserDetailsPage extends VerticalLayout implements BeforeEnterObserver, RefreshableTable {
private final RoomPickerClient client; private final SecurityService securityService;
private final RouteParamsExtractor paramsExtractor; private final RouteParamsExtractor paramsExtractor;
private RoomPickerClient client;
private IUser user; private IUser user;
private Grid<ShortResponseRoom> gridRooms; private Grid<ShortResponseRoom> gridRooms;
@PostConstruct
void postConstruct() {
client = securityService.getAuthenticatedAccount().getClient();
}
@Override @Override
public void beforeEnter(BeforeEnterEvent event) { public void beforeEnter(BeforeEnterEvent event) {
user = paramsExtractor.extractUser(event); user = paramsExtractor.extractUser(event);

View File

@ -15,13 +15,13 @@ import com.vaadin.flow.router.PageTitle;
import com.vaadin.flow.router.Route; import com.vaadin.flow.router.Route;
import jakarta.annotation.security.RolesAllowed; import jakarta.annotation.security.RolesAllowed;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import ru.dragonestia.picker.api.impl.RoomPickerClient;
import ru.dragonestia.picker.api.model.user.IUser; import ru.dragonestia.picker.api.model.user.IUser;
import ru.dragonestia.picker.api.model.user.UserDetails; import ru.dragonestia.picker.api.model.user.UserDetails;
import ru.dragonestia.picker.api.repository.UserRepository; import ru.dragonestia.picker.api.repository.UserRepository;
import ru.dragonestia.picker.api.repository.query.user.SearchUsers; import ru.dragonestia.picker.api.repository.query.user.SearchUsers;
import ru.dragonestia.picker.api.repository.type.UserIdentifier; import ru.dragonestia.picker.api.repository.type.UserIdentifier;
import ru.dragonestia.picker.cp.component.RefreshableTable; import ru.dragonestia.picker.cp.component.RefreshableTable;
import ru.dragonestia.picker.cp.service.SecurityService;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
@ -39,8 +39,8 @@ public class UserSearchPage extends VerticalLayout implements RefreshableTable {
private List<IUser> cachedUsers = new LinkedList<>(); private List<IUser> cachedUsers = new LinkedList<>();
@Autowired @Autowired
public UserSearchPage(RoomPickerClient client) { public UserSearchPage(SecurityService securityService) {
this.userRepository = client.getUserRepository(); this.userRepository = securityService.getAuthenticatedAccount().getClient().getUserRepository();
foundUsers = new Span(); foundUsers = new Span();
add(fieldUsername = createUsernameInputField()); add(fieldUsername = createUsernameInputField());

View File

@ -28,6 +28,8 @@ public class AccountServiceImpl implements AccountService {
void init() { void init() {
var account = createNewAccount("admin", "qwerty123"); var account = createNewAccount("admin", "qwerty123");
account.setAuthorities(Arrays.stream(Permission.values()).collect(Collectors.toSet())); account.setAuthorities(Arrays.stream(Permission.values()).collect(Collectors.toSet()));
createNewAccount("test", "qwerty123");
} }
public @NotNull Account createNewAccount(@NotNull String username, @NotNull String password) { public @NotNull Account createNewAccount(@NotNull String username, @NotNull String password) {