Compare commits
No commits in common. "7dbfd775472b1b3a007b0140d554d1ff83cb998d" and "c847830a7eb5d6d4cfc5309d9a00bc10c2994b83" have entirely different histories.
7dbfd77547
...
c847830a7e
@ -30,8 +30,6 @@ dependencies {
|
|||||||
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||||
implementation("com.vaadin:vaadin-spring-boot-starter")
|
implementation("com.vaadin:vaadin-spring-boot-starter")
|
||||||
implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
|
|
||||||
|
|
||||||
implementation("org.yaml:snakeyaml")
|
implementation("org.yaml:snakeyaml")
|
||||||
compileOnly("org.projectlombok:lombok")
|
compileOnly("org.projectlombok:lombok")
|
||||||
annotationProcessor("org.projectlombok:lombok")
|
annotationProcessor("org.projectlombok:lombok")
|
||||||
|
@ -7,7 +7,6 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
|||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import ru.vyatsu.qr_access_admin.client.component.ClientEditor;
|
import ru.vyatsu.qr_access_admin.client.component.ClientEditor;
|
||||||
import ru.vyatsu.qr_access_admin.client.entity.ClientEntity;
|
import ru.vyatsu.qr_access_admin.client.entity.ClientEntity;
|
||||||
import ru.vyatsu.qr_access_admin.client.entity.ClientRepository;
|
import ru.vyatsu.qr_access_admin.client.entity.ClientRepository;
|
||||||
@ -17,7 +16,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Route(value = "clients", layout = MainLayout.class)
|
@Route(value = "clients", layout = MainLayout.class)
|
||||||
@PageTitle("Клиенты")
|
@PageTitle("Клиенты")
|
||||||
@PermitAll
|
|
||||||
public class ClientView extends VerticalLayout {
|
public class ClientView extends VerticalLayout {
|
||||||
private final ClientRepository repository;
|
private final ClientRepository repository;
|
||||||
private final Grid<ClientEntity> grid;
|
private final Grid<ClientEntity> grid;
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package ru.vyatsu.qr_access_admin.common.config;
|
|
||||||
|
|
||||||
import com.vaadin.flow.spring.security.VaadinWebSecurity;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
|
||||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebSecurity
|
|
||||||
public class SecurityConfiguration extends VaadinWebSecurity {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void configure(HttpSecurity http) throws Exception {
|
|
||||||
super.configure(http);
|
|
||||||
http.oauth2Login(c -> c.loginProcessingUrl("/login/oauth2/code/own"));
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,14 +1,12 @@
|
|||||||
package ru.vyatsu.qr_access_admin.common.view;
|
package ru.vyatsu.qr_access_admin.common.view;
|
||||||
|
|
||||||
|
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
|
||||||
|
|
||||||
@Route(value = "", layout = MainLayout.class)
|
@Route(value = "", layout = MainLayout.class)
|
||||||
@PageTitle("Start")
|
@PageTitle("Start")
|
||||||
@PermitAll
|
|
||||||
public class MainView extends VerticalLayout {
|
public class MainView extends VerticalLayout {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
|||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import jakarta.persistence.EntityManager;
|
import jakarta.persistence.EntityManager;
|
||||||
import jakarta.persistence.EntityManagerFactory;
|
import jakarta.persistence.EntityManagerFactory;
|
||||||
import jakarta.persistence.Query;
|
import jakarta.persistence.Query;
|
||||||
@ -23,7 +22,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Route(value = "doors", layout = MainLayout.class)
|
@Route(value = "doors", layout = MainLayout.class)
|
||||||
@PageTitle("Двери")
|
@PageTitle("Двери")
|
||||||
@PermitAll
|
|
||||||
public class DoorView extends VerticalLayout {
|
public class DoorView extends VerticalLayout {
|
||||||
private final Grid<DoorEntity> grid;
|
private final Grid<DoorEntity> grid;
|
||||||
private final DoorRepository repository;
|
private final DoorRepository repository;
|
||||||
|
@ -7,7 +7,6 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
|||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
||||||
import ru.vyatsu.qr_access_admin.partner.component.PartnerEditor;
|
import ru.vyatsu.qr_access_admin.partner.component.PartnerEditor;
|
||||||
import ru.vyatsu.qr_access_admin.partner.entity.PartnerEntity;
|
import ru.vyatsu.qr_access_admin.partner.entity.PartnerEntity;
|
||||||
@ -17,7 +16,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Route(value = "partners", layout = MainLayout.class)
|
@Route(value = "partners", layout = MainLayout.class)
|
||||||
@PageTitle("Партнеры")
|
@PageTitle("Партнеры")
|
||||||
@PermitAll
|
|
||||||
public class PartnerView extends VerticalLayout {
|
public class PartnerView extends VerticalLayout {
|
||||||
private final PartnerRepository repository;
|
private final PartnerRepository repository;
|
||||||
private final Grid<PartnerEntity> grid;
|
private final Grid<PartnerEntity> grid;
|
||||||
|
@ -7,7 +7,6 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
|||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
||||||
import ru.vyatsu.qr_access_admin.door.entity.DoorRepository;
|
import ru.vyatsu.qr_access_admin.door.entity.DoorRepository;
|
||||||
import ru.vyatsu.qr_access_admin.qr.component.QrEditor;
|
import ru.vyatsu.qr_access_admin.qr.component.QrEditor;
|
||||||
@ -18,7 +17,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Route(value = "qrs", layout = MainLayout.class)
|
@Route(value = "qrs", layout = MainLayout.class)
|
||||||
@PageTitle("Коды")
|
@PageTitle("Коды")
|
||||||
@PermitAll
|
|
||||||
public class QrView extends VerticalLayout {
|
public class QrView extends VerticalLayout {
|
||||||
private final QrRepository repository;
|
private final QrRepository repository;
|
||||||
private final Grid<QrEntity> grid;
|
private final Grid<QrEntity> grid;
|
||||||
|
@ -7,7 +7,6 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
|||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
||||||
import ru.vyatsu.qr_access_admin.slot.component.SlotEditor;
|
import ru.vyatsu.qr_access_admin.slot.component.SlotEditor;
|
||||||
import ru.vyatsu.qr_access_admin.slot.entity.SlotEntity;
|
import ru.vyatsu.qr_access_admin.slot.entity.SlotEntity;
|
||||||
@ -17,7 +16,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Route(value = "slots", layout = MainLayout.class)
|
@Route(value = "slots", layout = MainLayout.class)
|
||||||
@PageTitle("Слоты")
|
@PageTitle("Слоты")
|
||||||
@PermitAll
|
|
||||||
public class SlotView extends VerticalLayout {
|
public class SlotView extends VerticalLayout {
|
||||||
private final SlotRepository repository;
|
private final SlotRepository repository;
|
||||||
private final Grid<SlotEntity> grid;
|
private final Grid<SlotEntity> grid;
|
||||||
|
@ -47,6 +47,4 @@ public class UnitEntity {
|
|||||||
@Column
|
@Column
|
||||||
@JdbcTypeCode(SqlTypes.JSON)
|
@JdbcTypeCode(SqlTypes.JSON)
|
||||||
private String tokenSettings;
|
private String tokenSettings;
|
||||||
@Column
|
|
||||||
private Boolean adminEditable;
|
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,6 @@ package ru.vyatsu.qr_access_admin.unit.entity;
|
|||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface UnitRepository extends JpaRepository<UnitEntity, String> {
|
public interface UnitRepository extends JpaRepository<UnitEntity, String> {
|
||||||
List<UnitEntity> findAllByAdminEditableIsTrue();
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package ru.vyatsu.qr_access_admin.unit.mapper;
|
package ru.vyatsu.qr_access_admin.unit.mapper;
|
||||||
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import ru.vyatsu.qr_access_admin.unit.entity.UnitEntity;
|
import ru.vyatsu.qr_access_admin.unit.entity.UnitEntity;
|
||||||
import ru.vyatsu.qr_access_admin.unit.model.UnitModel;
|
import ru.vyatsu.qr_access_admin.unit.model.UnitModel;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -32,7 +32,6 @@ public class UnitEntityUnitModelMapper {
|
|||||||
entity.setTokenSettings(DEFAULT_TOKEN_SETTINGS);
|
entity.setTokenSettings(DEFAULT_TOKEN_SETTINGS);
|
||||||
entity.setRedirectUris("");
|
entity.setRedirectUris("");
|
||||||
entity.setPostLogoutRedirectUris("");
|
entity.setPostLogoutRedirectUris("");
|
||||||
entity.setAdminEditable(true);
|
|
||||||
return entity;
|
return entity;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,7 +42,6 @@ public class UnitEntityUnitModelMapper {
|
|||||||
unitModel.setClientSecret(entity.getClientSecret());
|
unitModel.setClientSecret(entity.getClientSecret());
|
||||||
unitModel.setClientName(entity.getClientName());
|
unitModel.setClientName(entity.getClientName());
|
||||||
unitModel.setClientSecretExpiresAt(entity.getClientSecretExpiresAt());
|
unitModel.setClientSecretExpiresAt(entity.getClientSecretExpiresAt());
|
||||||
unitModel.setAdminEditable(entity.getAdminEditable());
|
|
||||||
return unitModel;
|
return unitModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package ru.vyatsu.qr_access_admin.unit.model;
|
package ru.vyatsu.qr_access_admin.unit.model;
|
||||||
|
|
||||||
|
import ru.vyatsu.qr_access_admin.common.validation.IsAfter;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import ru.vyatsu.qr_access_admin.common.validation.IsAfter;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@ -26,6 +26,4 @@ public class UnitModel {
|
|||||||
@NotBlank
|
@NotBlank
|
||||||
@Size(max = 255)
|
@Size(max = 255)
|
||||||
private String clientName;
|
private String clientName;
|
||||||
|
|
||||||
private boolean adminEditable;
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@ import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
|||||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||||
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.security.PermitAll;
|
|
||||||
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
import ru.vyatsu.qr_access_admin.common.MainLayout;
|
||||||
import ru.vyatsu.qr_access_admin.unit.component.UnitEditor;
|
import ru.vyatsu.qr_access_admin.unit.component.UnitEditor;
|
||||||
import ru.vyatsu.qr_access_admin.unit.entity.UnitEntity;
|
import ru.vyatsu.qr_access_admin.unit.entity.UnitEntity;
|
||||||
@ -19,7 +18,6 @@ import java.util.List;
|
|||||||
|
|
||||||
@Route(value = "units", layout = MainLayout.class)
|
@Route(value = "units", layout = MainLayout.class)
|
||||||
@PageTitle("Устройства")
|
@PageTitle("Устройства")
|
||||||
@PermitAll
|
|
||||||
public class UnitView extends VerticalLayout {
|
public class UnitView extends VerticalLayout {
|
||||||
|
|
||||||
private final UnitRepository unitRepository;
|
private final UnitRepository unitRepository;
|
||||||
@ -33,7 +31,6 @@ public class UnitView extends VerticalLayout {
|
|||||||
|
|
||||||
var addButton = new Button("Добавить устройство", VaadinIcon.PLUS.create());
|
var addButton = new Button("Добавить устройство", VaadinIcon.PLUS.create());
|
||||||
grid = new Grid<>(UnitModel.class);
|
grid = new Grid<>(UnitModel.class);
|
||||||
grid.setColumns("clientId", "clientName", "clientSecretExpiresAt");
|
|
||||||
editor = new UnitEditor();
|
editor = new UnitEditor();
|
||||||
|
|
||||||
var actionsLayout = new HorizontalLayout(addButton);
|
var actionsLayout = new HorizontalLayout(addButton);
|
||||||
@ -50,7 +47,7 @@ public class UnitView extends VerticalLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refreshUnitsGrid() {
|
private void refreshUnitsGrid() {
|
||||||
List<UnitEntity> entities = unitRepository.findAllByAdminEditableIsTrue();
|
List<UnitEntity> entities = unitRepository.findAll();
|
||||||
|
|
||||||
grid.setItems(entityModelMapper.mapEntityToModel(entities));
|
grid.setItems(entityModelMapper.mapEntityToModel(entities));
|
||||||
}
|
}
|
||||||
@ -75,11 +72,9 @@ public class UnitView extends VerticalLayout {
|
|||||||
});
|
});
|
||||||
|
|
||||||
editor.setDeleteListener(unit -> {
|
editor.setDeleteListener(unit -> {
|
||||||
if (unit.isAdminEditable()) {
|
|
||||||
unitRepository.deleteById(unit.getId());
|
unitRepository.deleteById(unit.getId());
|
||||||
refreshUnitsGrid();
|
refreshUnitsGrid();
|
||||||
editUnit(null);
|
editUnit(null);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
editor.setCancelListener(() -> editUnit(null));
|
editor.setCancelListener(() -> editUnit(null));
|
||||||
|
@ -9,20 +9,6 @@ spring:
|
|||||||
password: 123
|
password: 123
|
||||||
security:
|
security:
|
||||||
oauth2:
|
oauth2:
|
||||||
client:
|
resourceserver:
|
||||||
registration:
|
jwt:
|
||||||
own:
|
jwk-set-uri: http://localhost:8081/oauth2/jwks
|
||||||
clientId: ${CLIENT_ID:admin}
|
|
||||||
clientSecret: ${CLIENT_SECRET:}
|
|
||||||
authorizationGrantType: authorization_code
|
|
||||||
clientAuthenticationMethod: none
|
|
||||||
scope:
|
|
||||||
- admin
|
|
||||||
- openid
|
|
||||||
redirectUri: "{baseUrl}/login/oauth2/code/{registrationId}"
|
|
||||||
provider:
|
|
||||||
own:
|
|
||||||
issuerUri: http://127.0.0.1:8081
|
|
||||||
jwkSetUri: http://127.0.0.1:8081/oauth2/jwks
|
|
||||||
tokenUri: http://127.0.0.1:8081/oauth2/token
|
|
||||||
authorizationUri: http://127.0.0.1:8081/oauth2/authorize
|
|
Loading…
Reference in New Issue
Block a user