{% extends 'base.html.twig' %} {% block title %}Site Settings{% endblock %} {% block body %}

Site Settings

{% for msg in app.flashes('success') %}
{{ msg }}
{% endfor %} {% for msg in app.flashes('info') %}
{{ msg }}
{% endfor %} {% for msg in app.flashes('warning') %}
{{ msg }}
{% endfor %} {% for msg in app.flashes('danger') %}
{{ msg }}
{% endfor %}
{{ form_start(form, {attr: {id: 'site-settings-form', class: 'vstack gap-3', novalidate: 'novalidate'}}) }}
{{ form_label(form.EXTERNAL_ALBUM_PROVIDER) }} {{ form_widget(form.EXTERNAL_ALBUM_PROVIDER, {attr: {class: 'form-select', 'data-initial-provider': storedProvider}}) }}
Switching provider clears album/review catalog data to prevent mixed-source duplicates.
Stored provider: {{ providerLabelStored }} • Active provider: {{ providerLabelActive }} • Effective now: {{ providerLabelEffective }}
{% if envOverrideProvider %}
Environment override EXTERNAL_ALBUM_PROVIDER={{ envOverrideProvider }} is active and takes priority over saved settings.
{% endif %}
{{ form_label(form.LASTFM_API_KEY) }} {{ form_widget(form.LASTFM_API_KEY, {attr: {class: 'form-control'}}) }}
Environment override: LASTFM_API_KEY.

{{ form_label(form.MUSICBRAINZ_CLIENT_ID) }} {{ form_widget(form.MUSICBRAINZ_CLIENT_ID, {attr: {class: 'form-control'}}) }}
Optional. Not required for album search. Create OAuth app credentials at MusicBrainz account applications. Environment override: MUSICBRAINZ_CLIENT_ID.
{{ form_label(form.MUSICBRAINZ_CLIENT_SECRET) }} {{ form_widget(form.MUSICBRAINZ_CLIENT_SECRET, {attr: {class: 'form-control'}}) }}
Optional. Not required for album search. Pairs with client ID from MusicBrainz account applications. Environment override: MUSICBRAINZ_CLIENT_SECRET.
{{ form_label(form.MUSICBRAINZ_ACCESS_TOKEN) }} {{ form_widget(form.MUSICBRAINZ_ACCESS_TOKEN, {attr: {class: 'form-control'}}) }}
Optional. Leave empty for normal search.
If you need authenticated MusicBrainz features, create an OAuth app under MusicBrainz account applications, authorize it, then paste the returned access token here. Environment override: MUSICBRAINZ_ACCESS_TOKEN.

{{ form_label(form.TIDAL_CLIENT_ID) }} {{ form_widget(form.TIDAL_CLIENT_ID, {attr: {class: 'form-control'}}) }}
Required for TIDAL provider. Create credentials at developer.tidal.com. Environment override: TIDAL_CLIENT_ID.
{{ form_label(form.TIDAL_CLIENT_SECRET) }} {{ form_widget(form.TIDAL_CLIENT_SECRET, {attr: {class: 'form-control'}}) }}
Required for TIDAL provider. Environment override: TIDAL_CLIENT_SECRET.
{{ form_label(form.TIDAL_COUNTRY_CODE) }} {{ form_widget(form.TIDAL_COUNTRY_CODE, {attr: {class: 'form-control', placeholder: 'US'}}) }}
Optional ISO 3166-1 alpha-2 country code used for catalog availability (defaults to US). Environment override: TIDAL_COUNTRY_CODE.
{% set registrationToggleAttrs = {class: 'form-check-input'} %} {% if registrationImmutable %} {% set registrationToggleAttrs = registrationToggleAttrs|merge({disabled: true}) %} {% endif %} {{ form_widget(form.REGISTRATION_ENABLED, {attr: registrationToggleAttrs}) }} {{ form_label(form.REGISTRATION_ENABLED, null, {label_attr: {class: 'form-check-label'}}) }}
When disabled, public sign-up is blocked but admins can still create users from `/admin/users`.
{% if registrationImmutable %}
Locked by APP_ALLOW_REGISTRATION ({{ registrationOverrideValue ? 'enabled' : 'disabled' }}).
{% endif %}
{{ form_end(form) }}

Maintenance

Deletes all albums (and tracks) plus reviews. Users and settings stay intact.

Generate demo data

{% for key, command in demoCommands %}
{{ command.label }}
{{ command.description }}
Command: php bin/console {{ command.command }}
{% for field in command.fields %} {% if field.type != 'checkbox' %}
{% endif %} {% endfor %}
{% for field in command.fields %} {% if field.type == 'checkbox' %}
{% endif %} {% endfor %}
{% endfor %}
{% endblock %} {% block javascripts %} {{ parent() }} {% endblock %}