Archived
You built a self-service catalogue admin on feature/admin-and-ui-wins while I built a
competing one that had already merged and deployed. Both forked from c8cc8fe. Per your
call, your implementation is the one that stays.
Kept from main (files your branch didn't touch, so no conflict):
- the CI test gate (tests now run and block the image)
- motion 12.42.2
- the platform contract test
Took from your branch:
- split AdminProductController / AdminCategoryController + ProductPhotoService (server-side
webp via cwebp)
- a real category table (Category, V3__categories.sql) behind the product filters
- pages/Admin.tsx, with server-side /admin protection that redirects a browser to Authentik
and returns it to /admin afterward — cleaner than my client-side gate, and it avoids the
post-login-to-home issue my version had
Deleted my competing admin (AdminController, MeController, pages/admin/*, auth.tsx, and my
admin tests).
Grafted onto your gallery: swipe + arrow keys, which the deployed version had and yours
didn't. Added an AdminSecurityTest for your endpoints (admin closed, shop public, contact
CSRF) — the admin was otherwise untested, and CI now gates on tests.
Verified against a running container: /admin redirects a browser to Authentik (a bare 401
only for */* fetches, which is correct). 25 tests green.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
Claude-Session: https://claude.ai/code/session_01XXKjx7FNyRVAjU8dgB5KhN
132 lines
5.3 KiB
XML
132 lines
5.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
<modelVersion>4.0.0</modelVersion>
|
|
|
|
<parent>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-parent</artifactId>
|
|
<version>0.1.9</version>
|
|
<relativePath/>
|
|
</parent>
|
|
|
|
<groupId>com.itsthevine</groupId>
|
|
<artifactId>itsthevine</artifactId>
|
|
<version>0.1.0</version>
|
|
<name>The Vine Coffeehouse + Bakery</name>
|
|
<description>Site for The Vine in Princeville, IL — menu, story, and contact form — on the Bennett platform.</description>
|
|
|
|
<dependencyManagement>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-bom</artifactId>
|
|
<version>0.1.9</version>
|
|
<type>pom</type>
|
|
<scope>import</scope>
|
|
</dependency>
|
|
<!-- Spring Boot 4.1 no longer manages the raw org.testcontainers:* module versions -->
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>testcontainers-bom</artifactId>
|
|
<version>1.21.4</version>
|
|
<type>pom</type>
|
|
<scope>import</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
</dependencyManagement>
|
|
|
|
<!-- Platform releases live in the Gitea Maven registry (anonymous read). Declared here so Renovate
|
|
can discover new platform versions and open a bump PR. Maven still needs this repo in
|
|
settings.xml for PARENT resolution (see .gitea/ci-settings.xml). -->
|
|
<repositories>
|
|
<repository>
|
|
<id>gitea</id>
|
|
<url>https://git.thebennett.net/api/packages/austin/maven</url>
|
|
<releases><enabled>true</enabled></releases>
|
|
<snapshots><enabled>false</enabled></snapshots>
|
|
</repository>
|
|
</repositories>
|
|
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-starter-web</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-starter-data</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-starter-contact</artifactId>
|
|
</dependency>
|
|
<!-- The site is still a public brochure, but the catalogue is now editable from it: the admin
|
|
screens sign in against Authentik (OIDC) and upload photos to the bucket. Both are off
|
|
unless platform.security.mode=OIDC, which is what gates the admin endpoints existing at
|
|
all — see AdminProductController. -->
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-starter-security</artifactId>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-starter-storage</artifactId>
|
|
</dependency>
|
|
|
|
<!-- test -->
|
|
<!-- Contract tests every app on the platform inherits. -->
|
|
<dependency>
|
|
<groupId>net.thebennett.platform</groupId>
|
|
<artifactId>platform-starter-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-starter-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<!-- springSecurity() for MockMvc — without it the filter chain is absent and every protected
|
|
path answers 200, so a security test would prove the opposite of what it claims. -->
|
|
<dependency>
|
|
<groupId>org.springframework.security</groupId>
|
|
<artifactId>spring-security-test</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-testcontainers</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>postgresql</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>org.testcontainers</groupId>
|
|
<artifactId>junit-jupiter</artifactId>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
|
|
<build>
|
|
<plugins>
|
|
<plugin>
|
|
<groupId>org.springframework.boot</groupId>
|
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
</plugin>
|
|
<!-- SPA build inherited from platform-parent (node install + npm build + copy dist -> jar). -->
|
|
<plugin>
|
|
<groupId>com.github.eirslett</groupId>
|
|
<artifactId>frontend-maven-plugin</artifactId>
|
|
</plugin>
|
|
<plugin>
|
|
<groupId>org.apache.maven.plugins</groupId>
|
|
<artifactId>maven-resources-plugin</artifactId>
|
|
</plugin>
|
|
</plugins>
|
|
</build>
|
|
</project>
|