Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Вводная информация

Есть базовое приложение на базе Laravel8 + jetstream/Fortify

Базовый jetstream/Fortify модернизирован. Добавил поле uuid для команд и пользователей. Все бизнес-модули переделаны с использования полей company_id на поле team_uuid, с author_id/user_id на author_uuid/user_uuid.

Задачи:

  • Если это возможно то нужно переделать всю работу блока jetstream на поле UUID а поле ID в users и teams удалить (не факт что возможно без форка, если так - отмена)
  • Опционально заблокировать добавление пользователей в личную команду.

    Сейчас у каждого пользователя при регистрации создается личная команда.

    Если требуемая опция в конфиге (для всего сайта) включена то пользователи не могут приглашать других участников в свою персональную команду. Т.е. персональные команды становятся однопользовательскими.

  • Сделать возможность приглашать пользователей которые еще не зарегистрированы в сервисе.
  • Сейчас в команду можно добавить только зарегистрированных в сервисе пользователей.

    Нужно чтобы при попытке добавить в команду email еще не зарегистрированного пользователя:

    • Выводилось сообщение что юзер еще не зарегистрирован и ему будет отправлено приглашение
    • Осуществлялась регистрация нового пользователя, он становился частью команды. В поле name (которое мы не знаем) записывается адрес электронной почты.
    • Новому пользователю отправлялось письмо-приглашение с содержимым "Вася ([email protected]) приглашает вас в команду СуперКоманда в сервисе Templateapp. Для активации вашего аккаунта перейдите по ссылке ..."
    • После перехода по ссылке (активации аккаунта) пользователю предлагается ввести свое имя/фамилию/новый пароль (старого пароля он не знает)/

      По пунктам 3-4 принимаются предложения, как это правильнее реализовать. У нас такой "приглашенный" пользователь не знает свой пароль и неправильно будет сначала его приглашать (=активировать учетку) а потом запускать процесс смены пароля с еще одним письмом на почту.

  • Уведомлять о приглашении в команду

    Фишка команд в jetstream что можно пользователей приглашать (добавлять) в разные команды. Нужно добавить чтобы когда пользователя приглашают в команду - ему приходило по почте уведомление об этом.

  • В профиле пользователя сделать список команд в которые он входит. С кнопкой Выйти из команды. С указанием является ли пользователь владельцем этой команды (если владелец то выйти нельзя). С указанием роли в команде. С ссылкой для перехода на страницу (профиль) команды.
  • Спрятать ID команд, добавить slug к командам
  • Сейчас доступ к профилю команды осуществляется через teams/[id]. Нужно переделать на teams/[slug]. Соответственно добавить в таблицу teams поле slug, сделать его генерацию при создании и изменении (переименовании) команды. Не использовать eloquent-sluggable. Ниже пример кода для генерации слагов (добавляется в модель).

public function setSlugAttribute($value)

{

$this->attributes['slug'] = $this->generateUniqueSlug($value);

}

private function generateUniqueSlug($value)

{

$temp = Str::slug($value, '-');

if(!Assettype::all()->where('slug',$temp)->isEmpty()){

  $i = 1;

  $newSlug = $temp . '-' . $i;

  while(!Assettype::all()->where('slug',$newSlug)->isEmpty()){

$i++;

$newSlug = $temp . '-' . $i;

  }

  $temp =  $newSlug;

}

return $temp;

}

Установка

git clone https://github.com/NKazantsev/templateapp5.git

Добавить каталоги

storage\app\

storage\app\public

storage\framework\

storage\framework\cache\

storage\framework\logs\

storage\framework\sessions\

storage\framework\testing\

storage\framework\views\composer update

npm install

npm run prod

В .env указать свою БД и почтовый сервер

php artisan migrate

Зарегистрироваться, пройти активацию (для этого укажите свои параметры в env для mailtrap)

NDA:

Исключительные права на результаты интеллектуальной деятельности, созданные в рамках выполнения указанных работ, включая авторские права, передаются навсегда и в полном объеме Заказчику. 

Исполнитель обязуется не раскрывать кому либо характер и состав заказанных работ, не передавать результаты работ кому либо кроме Заказчика (Казанцева Н.В.) 

3 года назад
nkazantsev
Николай 
36 летРоссия
4 года в сервисе
Был
3 года назад
Выбранный исполнитель
alexforever1808
Алексей 
36 летМолдова
5 лет в сервисе
Был
год назад
3 года назад
$325
4 дня
Алексей хорошо разбирается в фреймворке Laravel
Всегда приятно работать с постоянным заказчиком