diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 1d2bcadc..fc84d1d8 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -22,7 +22,7 @@ jobs: - name: Add server to known hosts run: | - ssh-keyscan -H v3.dscrs.site >> ~/.ssh/known_hosts + ssh-keyscan -H staging.discours.io >> ~/.ssh/known_hosts - name: Configure Git run: | @@ -37,7 +37,7 @@ jobs: - name: Deploy to Server env: - SERVER_HOST: v3.dscrs.site + SERVER_HOST: staging.discours.io SERVER_USER: dokku APP_NAME: core run: | diff --git a/.gitea/workflows/main.yml b/.gitea/workflows/main.yml index 027d255a..beca6a60 100644 --- a/.gitea/workflows/main.yml +++ b/.gitea/workflows/main.yml @@ -26,7 +26,7 @@ jobs: git_remote_url: 'ssh://dokku@v2.discours.io:22/discoursio-api' ssh_private_key: ${{ secrets.PROD_PRIVATE_KEY }} - - name: Push to v3.dscrs.site branch + - name: Push to staging if: github.ref == 'refs/heads/dev' uses: dokku/github-action@master with: diff --git a/panel/modals/RolesModal.tsx b/panel/modals/RolesModal.tsx index d25f2520..300914fa 100644 --- a/panel/modals/RolesModal.tsx +++ b/panel/modals/RolesModal.tsx @@ -20,31 +20,31 @@ export interface UserEditModalProps { // Доступные роли в системе const AVAILABLE_ROLES = [ { - id: 'Администратор', + id: 'admin', name: 'Системный администратор', description: 'Администраторы определяются автоматически по настройкам сервера', emoji: '🪄' }, { - id: 'Редактор', + id: 'editor', name: 'Редактор', description: 'Редактирование публикаций и управление сообществом', emoji: '✒️' }, { - id: 'Эксперт', + id: 'expert', name: 'Эксперт', description: 'Добавление доказательств и опровержений, управление темами', emoji: '🔬' }, { - id: 'Автор', + id: 'author', name: 'Автор', description: 'Создание и редактирование своих публикаций', emoji: '📝' }, { - id: 'Читатель', + id: 'reader', name: 'Читатель', description: 'Чтение и комментирование', emoji: '📖' @@ -57,7 +57,7 @@ const UserEditModal: Component = (props) => { email: props.user.email || '', name: props.user.name || '', slug: props.user.slug || '', - roles: props.user.roles || [] // Включаем все роли, включая администратора + roles: props.user.roles || [] }) const [errors, setErrors] = createSignal>({}) @@ -65,7 +65,7 @@ const UserEditModal: Component = (props) => { // Проверяем, является ли пользователь администратором по ролям, которые приходят с сервера const isAdmin = () => { - return (props.user.roles || []).includes('Администратор') + return (props.user.roles || []).includes('admin') } // Получаем информацию о роли по ID @@ -100,7 +100,7 @@ const UserEditModal: Component = (props) => { email: props.user.email || '', name: props.user.name || '', slug: props.user.slug || '', - roles: props.user.roles || [] // Включаем все роли, включая администратора + roles: props.user.roles || [] }) setErrors({}) } @@ -116,7 +116,7 @@ const UserEditModal: Component = (props) => { const handleRoleToggle = (roleId: string) => { // Роль администратора нельзя изменить вручную - if (roleId === 'Администратор') { + if (roleId === 'admin') { return } @@ -139,29 +139,23 @@ const UserEditModal: Component = (props) => { const data = formData() // Email - if (!data.email.trim()) { - newErrors.email = 'Email обязателен' - } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email.trim())) { + if (!data.email.trim() || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(data.email.trim())) { newErrors.email = 'Неверный формат email' } // Имя - if (!data.name.trim()) { - newErrors.name = 'Имя обязательно' - } else if (data.name.trim().length < 2) { + if (!data.name.trim() || data.name.trim().length < 2) { newErrors.name = 'Имя должно содержать минимум 2 символа' } // Slug - if (!data.slug.trim()) { - newErrors.slug = 'Slug обязателен' - } else if (!/^[a-z0-9_-]+$/.test(data.slug.trim())) { + if (!data.slug.trim() || !/^[a-z0-9_-]+$/.test(data.slug.trim())) { newErrors.slug = 'Slug может содержать только латинские буквы, цифры, дефисы и подчеркивания' } // Роли (админы освобождаются от этого требования) - if (!isAdmin() && data.roles.filter((role) => role !== 'Администратор').length === 0) { - newErrors.roles = 'Выберите хотя бы одну роль (или назначьте админский email)' + if (!isAdmin() && data.roles.filter((role) => role !== 'admin').length === 0) { + newErrors.roles = 'Выберите хотя бы одну роль' } setErrors(newErrors) @@ -351,13 +345,13 @@ const UserEditModal: Component = (props) => {
{(role) => { - const isAdminRole = role.id === 'Администратор' + const isAdminRole = role.id === 'admin' const isSelected = formData().roles.includes(role.id) - const isDisabled = isAdminRole // Роль администратора всегда заблокирована + const isDisabled = isAdminRole return (