Added filter for uneditable units

This commit is contained in:
kashiuno 2025-02-14 19:54:28 +03:00
parent c847830a7e
commit e98789a1ee
5 changed files with 18 additions and 6 deletions

View File

@ -47,4 +47,6 @@ public class UnitEntity {
@Column @Column
@JdbcTypeCode(SqlTypes.JSON) @JdbcTypeCode(SqlTypes.JSON)
private String tokenSettings; private String tokenSettings;
@Column
private Boolean adminEditable;
} }

View File

@ -3,6 +3,9 @@ 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();
} }

View File

@ -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,6 +32,7 @@ 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;
} }
@ -42,6 +43,7 @@ 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;
} }

View File

@ -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,4 +26,6 @@ public class UnitModel {
@NotBlank @NotBlank
@Size(max = 255) @Size(max = 255)
private String clientName; private String clientName;
private boolean adminEditable;
} }

View File

@ -31,6 +31,7 @@ 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);
@ -47,7 +48,7 @@ public class UnitView extends VerticalLayout {
} }
private void refreshUnitsGrid() { private void refreshUnitsGrid() {
List<UnitEntity> entities = unitRepository.findAll(); List<UnitEntity> entities = unitRepository.findAllByAdminEditableIsTrue();
grid.setItems(entityModelMapper.mapEntityToModel(entities)); grid.setItems(entityModelMapper.mapEntityToModel(entities));
} }
@ -72,9 +73,11 @@ public class UnitView extends VerticalLayout {
}); });
editor.setDeleteListener(unit -> { editor.setDeleteListener(unit -> {
unitRepository.deleteById(unit.getId()); if (unit.isAdminEditable()) {
refreshUnitsGrid(); unitRepository.deleteById(unit.getId());
editUnit(null); refreshUnitsGrid();
editUnit(null);
}
}); });
editor.setCancelListener(() -> editUnit(null)); editor.setCancelListener(() -> editUnit(null));