Загрузить изображение для проекта: 'Citeck Community'
  1. Citeck Community
  2. ECOSCOM-5571

Add workspace artifact

    XMLWordДля печати

Детали задачи

    • Icon: История История
    • Решение: Готово
    • Icon: Medium Medium
    • Community 2024.10
    • Не заполнено
    • Не заполнено
    • Не заполнено

    Описание

      Добавить в ecos-model новые артефакт workspace и новый тип workspace-member
      Деплой через артефакты в первой итерации нужен только для workspace (если решим деплоить workspace-member, то сделаем отдельной задачей).
      В рамках задачи в админке должен появиться новый журнал workspaces (рабочие пространства) с возможностью создать и редактировать записи в нем.

      Тип workspace-member

      Атрибуты (связь с workspace по child ассоциации workspaceMembers)

      - id: authority
        mandatory: true
        type: AUTHORITY
      - id: memberRole
        mandatory: true
        type: TEXT # USER/MANAGER

      queryPermsPolicy: PUBLIC

      Управление правами на просмотр и редактирование кастомное - на основе прав на _parent (workspace).

      Тип workspace

      Атрибуты

      - id: name
        type: MLTEXT
        mandatory: true
      - id: workspaceMembers
        type: ASSOC
        multiple: true
        config:
          typeRef: emodel/type@workspace-member
          child: true
      - id: visibility # PUBLIC/PRIVATE
        mandatory: true
        type: TEXT

      queryPermsPolicy: PUBLIC

      Управление правами кастомное:

      1. В query запросе если пользователь не админ и не система, то добавляем условия поиска (visibility = PUBLIC OR workspaceMembers.authority IN [authorities_пользователя])
      2. Пользователь имеет права на чтение если найдется workspace-member с фильтром по _parent (workspace) и authority in [authorities_пользователя]
      3. Пользователь имеет права на запись если найдется workspace-member по условиям из п.2 И memberRole = MANAGER

      Права на создание новых workspace'ов должны быть у всех пользователей системы.

      При создании нового workspace на форме текущий пользователь должен быть добавлен в workspaceMembers с ролью MANAGER

      В RecordsDao для workspace в методе getRecordsAtts предусмотреть поддержку виртуальных персональных рабочих пространств. Если id рабочего пространства начинается на user$, то:

      1. Проверяем что текущий пользователь система, или админ или его username равен тому что находится после знака '$'
      2. Если условие 1 не выполнилось, то возвращаем  EmptyAttValue.INSTANCE (в target DAO запрос не отправляем)
      3. Если условие 1 выполнилось, то возвращаем сгенерированную DTO персонального рабочего пространства. В DTO должен быть один member с ролью manager (тот что записан после 'user$'), должно быть имя и id, который равен тому что пришло в getRecordsAtts  

      В ходе выполнения задачи подготовить примеры запросов:

      1. Получение всех доступных рабочих пространств (где пользователь member или visibility == PUBLIC)
      2. Получение всех рабочих пространств, в которые добавлен пользователь (где пользователь member)

      Вложенные файлы

        Активность

          Люди

            roman.makarskiy@citeck.ru Roman Makarskiy
            pavel.simonov@citeck.ru Pavel Simonov
            Голоса:
            0 Голосовать за эту задачу
            Наблюдатели:
            3 Начать наблюдение за этой задачей

            Даты

              Создано:
              Обновленo:
              Дата решения:

              Учет времени

                Оценка:
                Первоначальная оценка - 1 неделя
                1w
                Осталось:
                Оставшееся время - 0 минуты
                0m
                Затрачено:
                Затраченное время - 4 дни, 7 часы Незатраченное время
                4d 7h