add custom theme
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2026-01-14 01:38:39 +03:00
parent 2953a97a46
commit 61b856254b
12 changed files with 717 additions and 2 deletions

102
keycloak-theme/README.md Normal file
View File

@ -0,0 +1,102 @@
# Team Planner Keycloak Theme
Кастомная тема для Keycloak, стилизованная под основное приложение Team Planner (Material UI).
## Структура
```
team-planner/
├── login/
│ ├── theme.properties # Настройки темы
│ ├── login.ftl # Шаблон страницы входа
│ ├── resources/
│ │ └── css/
│ │ └── login.css # Стили MUI
│ └── messages/
│ └── messages_ru.properties # Русские переводы
```
## Установка
### Вариант 1: Volume mount (рекомендуется для dev)
```yaml
# docker-compose.yml
services:
keycloak:
image: quay.io/keycloak/keycloak:latest
volumes:
- ./keycloak-theme/team-planner:/opt/keycloak/themes/team-planner
```
### Вариант 2: Dockerfile (рекомендуется для production)
```dockerfile
FROM quay.io/keycloak/keycloak:latest
COPY team-planner /opt/keycloak/themes/team-planner
```
### Вариант 3: Kubernetes ConfigMap
```bash
# Создать ConfigMap из директории темы
kubectl create configmap keycloak-theme \
--from-file=team-planner/login/ \
-n keycloak
# Примонтировать в deployment
```
## Активация темы
1. Войдите в Keycloak Admin Console
2. Выберите realm `team-planner`
3. Перейдите в **Realm Settings****Themes**
4. В поле **Login theme** выберите `team-planner`
5. Нажмите **Save**
Или через Keycloak CLI:
```bash
/opt/keycloak/bin/kcadm.sh update realms/team-planner \
-s loginTheme=team-planner \
--server http://localhost:8080 \
--realm master \
--user admin
```
## Разработка
Для разработки темы:
1. Запустите Keycloak с примонтированной темой
2. Включите кэширование темы в dev режиме:
```
KC_SPI_THEME_STATIC_MAX_AGE=-1
KC_SPI_THEME_CACHE_THEMES=false
KC_SPI_THEME_CACHE_TEMPLATES=false
```
3. Изменения в CSS/FTL применяются после обновления страницы
## Кастомизация
### Цвета
Основные цвета определены в CSS переменных в `login.css`:
```css
:root {
--primary-color: #1976d2; /* MUI primary */
--primary-hover: #1565c0;
--text-primary: rgba(0, 0, 0, 0.87);
--text-secondary: rgba(0, 0, 0, 0.6);
--background: #f5f5f5;
--surface: #ffffff;
}
```
### Тексты
Русские переводы в `messages/messages_ru.properties`.
Для других языков создайте `messages_XX.properties`.