Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
1d964f8
feat: add initial configuration files ddev
Rene-Roscher Aug 15, 2025
3228464
feat: add Adminer support with PostgreSQL configuration
Rene-Roscher Aug 15, 2025
5ce9840
feat: add Laravel Boost configuration and guidelines
Rene-Roscher Aug 15, 2025
ca36f90
feat: add HasShortIdentifier trait for generating short unique IDs
Rene-Roscher Aug 15, 2025
5d9295a
feat: update tables to use Snowflake IDs
Rene-Roscher Aug 15, 2025
9d33875
feat: make BaseModel abstract to enforce subclass implementation
Rene-Roscher Aug 17, 2025
c31dcc1
feat: remove commented-out authentication routes for clarity
Rene-Roscher Aug 17, 2025
497dffb
feat: enhance BaseModel with incrementing settings and guarded fields
Rene-Roscher Aug 17, 2025
924b29d
feat: add attribute casting for models to ensure proper data types
Rene-Roscher Aug 17, 2025
a1c2802
feat: add organization-related policy traits for user permissions and…
Rene-Roscher Aug 18, 2025
9558f68
feat: enhance organization policies with ownership and permission checks
Rene-Roscher Aug 18, 2025
cfdce85
feat: add additional invitation error messages for user role management
Rene-Roscher Aug 18, 2025
a57d43b
feat: add additional invitation error messages for user role management
Rene-Roscher Aug 18, 2025
d99d308
feat: enhance invitation acceptance logic with authorization checks
Rene-Roscher Aug 18, 2025
f01f434
feat: implement base policy class for authorization handling
Rene-Roscher Aug 18, 2025
627fae3
feat: improve organization user management with rate limiting and enh…
Rene-Roscher Aug 18, 2025
9408c7a
up
Rene-Roscher Aug 18, 2025
cd30681
feat: add Sonner toaster component and update build configuration
Rene-Roscher Aug 18, 2025
f82354d
feat: integrate Sonner toaster component for enhanced notifications
Rene-Roscher Oct 11, 2025
a87f005
feat: implement passkeys authentication system
Rene-Roscher Oct 11, 2025
c118d1c
fix: resolve passkey authentication issues
Rene-Roscher Oct 11, 2025
5633049
fix: correct UserAgent service usage and recently used logic in Passk…
Rene-Roscher Oct 11, 2025
12a63d5
fix: remove non-existent device() method call from PasskeyController
Rene-Roscher Oct 11, 2025
2b22167
fix: resolve passkey authentication and translation issues
Rene-Roscher Oct 11, 2025
884fef4
fix: replace ConfirmationStoreDialog with standard Dialog component
Rene-Roscher Oct 11, 2025
3426816
fix: implement Snowflake IDs for passkeys and fix translation interpo…
Rene-Roscher Oct 11, 2025
cf57529
fix: correct timezone handling for last_used_at display
Rene-Roscher Oct 11, 2025
dcda29c
feat: enhance passkey management with CSRF protection, HTTPS enforcem…
Rene-Roscher Oct 11, 2025
2a5b9ce
test: update authentication and dashboard tests to use named routes
Rene-Roscher Oct 11, 2025
6622570
feat: add API routes and Sanctum configuration for user authentication
Rene-Roscher Oct 12, 2025
157a971
feat: implement API token management with creation, revocation, and e…
Rene-Roscher Oct 12, 2025
7823811
feat: add API token management routes and sidebar navigation
Rene-Roscher Oct 12, 2025
71b694a
feat: create personal access tokens table and user management API
Rene-Roscher Oct 12, 2025
7ba0a4a
feat: configure API routing and integrate Sanctum for personal access…
Rene-Roscher Oct 12, 2025
4a444fa
feat: add Sanctum configuration for stateful domains in .env.example
Rene-Roscher Oct 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .ddev/addon-metadata/adminer/manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: adminer
repository: ddev/ddev-adminer
version: v1.1.4
install_date: "2025-08-15T09:34:03+02:00"
project_files:
- docker-compose.adminer.yaml
- docker-compose.adminer_norouter.yaml
- commands/host/adminer
global_files: []
removal_actions: []
10 changes: 10 additions & 0 deletions .ddev/addon-metadata/phpmyadmin/manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: phpmyadmin
repository: ddev/ddev-phpmyadmin
version: v1.0.0
install_date: "2025-08-15T08:51:43+02:00"
project_files:
- docker-compose.phpmyadmin.yaml
- docker-compose.phpmyadmin_norouter.yaml
- commands/host/phpmyadmin
global_files: []
removal_actions: []
38 changes: 38 additions & 0 deletions .ddev/addon-metadata/redis/manifest.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: redis
repository: ddev/ddev-redis
version: v2.1.2
install_date: "2025-08-15T09:14:49+02:00"
project_files:
- docker-compose.redis.yaml
- redis/scripts/settings.ddev.redis.php
- redis/scripts/setup-drupal-settings.sh
- redis/scripts/setup-redis-optimized-config.sh
- redis/redis.conf
- redis/advanced.conf
- redis/append.conf
- redis/general.conf
- redis/io.conf
- redis/memory.conf
- redis/network.conf
- redis/security.conf
- redis/snapshots.conf
- commands/host/redis-backend
- commands/redis/redis-cli
- commands/redis/redis-flush
global_files: []
removal_actions:
- |
#ddev-description:Remove redis settings if applicable
files=(
"${DDEV_APPROOT}/${DDEV_DOCROOT}/sites/default/settings.ddev.redis.php"
"${DDEV_APPROOT}/.ddev/docker-compose.redis_extra.yaml"
)
for file in "${files[@]}"; do
if [ -f "$file" ]; then
if grep -q '#ddev-generated' "$file"; then
rm -f "$file"
else
echo "Unwilling to remove '$file' because it does not have #ddev-generated in it; you can manually delete it if it is safe to delete."
fi
fi
done
15 changes: 15 additions & 0 deletions .ddev/commands/host/adminer
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash

## #ddev-generated: If you want to edit and own this file, remove this line.
## Description: Launch a browser with Adminer
## Usage: adminer
## Example: "ddev adminer"

DDEV_ADMINER_PORT=9100
DDEV_ADMINER_HTTPS_PORT=9101

if [ ${DDEV_PRIMARY_URL%://*} = "http" ] || [ -n "${GITPOD_WORKSPACE_ID:-}" ] || [ "${CODESPACES:-}" = "true" ]; then
ddev launch :$DDEV_ADMINER_PORT
else
ddev launch :$DDEV_ADMINER_HTTPS_PORT
fi
116 changes: 116 additions & 0 deletions .ddev/commands/host/redis-backend
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
#!/usr/bin/env bash
#ddev-generated

## Description: Use a different key-value store for Redis
## Usage: redis-backend <image> [optimize]
## Example: ddev redis-backend redis-alpine optimize

REDIS_DOCKER_IMAGE=${1:-}
REDIS_CONFIG=${2:-}
NAME=$REDIS_DOCKER_IMAGE

function show_help() {
cat <<EOF
Usage: ddev redis-backend <image|alias> [optimize]

Choose from predefined aliases, or provide any Redis-compatible Docker image.
Note that not every Docker image can work right away, and you may need to override
the "command:" in the docker-compose.redis_extra.yaml file

Available aliases:
redis redis:7
redis-alpine redis:7-alpine
valkey valkey/valkey:8
valkey-alpine valkey/valkey:8-alpine

Custom backend:
You can specify any Docker image, e.g.:
ddev redis-backend redis:6

Optional:
optimize Apply additional Redis configuration with resource limits
optimized Same as optimize

Examples:
ddev redis-backend redis-alpine optimize
ddev redis-backend valkey
ddev redis-backend redis:7.2-alpine
EOF
exit 0
}

function optimize_config() {
[[ "$REDIS_CONFIG" != "optimized" && "$REDIS_CONFIG" != "optimize" ]] && return
ddev dotenv set .ddev/.env.redis --redis-optimized=true
}

function cleanup() {
rm -f "$DDEV_APPROOT/.ddev/.env.redis"
rm -rf "$DDEV_APPROOT/.ddev/redis/"
rm -f "$DDEV_APPROOT/.ddev/docker-compose.redis.yaml" "$DDEV_APPROOT/.ddev/docker-compose.redis_extra.yaml"

redis_volume="ddev-$(ddev status -j | docker run -i --rm ddev/ddev-utilities jq -r '.raw.name')_redis"
if docker volume ls -q | grep -qw "$redis_volume"; then
ddev stop
docker volume rm "$redis_volume"
fi
}

function check_docker_image() {
echo "Pulling ${REDIS_DOCKER_IMAGE}..."
if ! docker pull "$REDIS_DOCKER_IMAGE"; then
echo >&2 "❌ Unable to pull ${REDIS_DOCKER_IMAGE}"
exit 2
fi
}

function use_docker_image() {
[[ "$REDIS_DOCKER_IMAGE" != "redis:7" ]] && ddev dotenv set .ddev/.env.redis --redis-docker-image="$REDIS_DOCKER_IMAGE"
REPO=$(ddev add-on list --installed -j 2>/dev/null | docker run -i --rm ddev/ddev-utilities jq -r '.raw[] | select(.Name=="redis") | .Repository // empty' 2>/dev/null)
ddev add-on get "${REPO:-ddev/ddev-redis}"
}

case "$REDIS_DOCKER_IMAGE" in
redis)
NAME="Redis 7"
REDIS_DOCKER_IMAGE="redis:7"
;;
redis-alpine)
NAME="Redis 7 Alpine"
REDIS_DOCKER_IMAGE="redis:7-alpine"
;;
valkey)
NAME="Valkey 8"
REDIS_DOCKER_IMAGE="valkey/valkey:8"
;;
valkey-alpine)
NAME="Valkey 8 Alpine"
REDIS_DOCKER_IMAGE="valkey/valkey:8-alpine"
;;
""|--help|-h)
show_help
;;
*)
NAME="$REDIS_DOCKER_IMAGE"
# Allow unknown image, nothing to override
;;
esac

check_docker_image
cleanup
optimize_config
use_docker_image

echo
echo "✅ Redis backend: $REDIS_DOCKER_IMAGE"
if [[ "$REDIS_CONFIG" == "optimized" || "$REDIS_CONFIG" == "optimize" ]]; then
echo "⚙️ Redis config: optimized"
else
echo "⚙️ Redis config: default"
fi

echo
echo "📝 Commit the '.ddev' directory to version control"

echo
echo "🔄 Redis config available after 'ddev restart'"
13 changes: 13 additions & 0 deletions .ddev/commands/redis/redis-cli
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/usr/bin/env sh

#ddev-generated
## Description: Run redis-cli inside the Redis container
## Usage: redis-cli [flags] [args]
## Example: "ddev redis-cli KEYS *" or "ddev redis-cli INFO" or "ddev redis-cli --version"
## Aliases: redis

if [ -f /etc/redis/conf/security.conf ]; then
redis-cli -p 6379 -h redis -a redis --no-auth-warning $@
else
redis-cli -p 6379 -h redis $@
fi
12 changes: 12 additions & 0 deletions .ddev/commands/redis/redis-flush
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/usr/bin/env sh

#ddev-generated
## Description: Flush all cache inside the Redis container
## Usage: redis-flush
## Example: "ddev redis-flush"

if [ -f /etc/redis/conf/security.conf ]; then
redis-cli -p 6379 -h redis -a redis --no-auth-warning FLUSHALL ASYNC
else
redis-cli -p 6379 -h redis FLUSHALL ASYNC
fi
Loading
Loading