Разработка личного кабинета

  • 12 февраля 2020
  • 13
Бюджет
25,000 ₽
Безопасная сделка

Описание

Разработка простого личного кабинета фронтенд бэкэнд:
html – одностраничное веб приложение,
html – для просмотра данных неавторизованными пользователями,
php скрипт – для передачи данных в бд фильтруя их от sql инъекций и авторизации
mysql – хранилище

1) в mysql бд project
таблица users с полями
id – тип numeric – id пользователя в бд increment с индексом по полю
email – он же login с индексом по полю,
password – кэш пароля с солью,
referer_id – numeric – id пользователя пригласившего (реферер) с индексом по полю,
last_active – дата и время последней активности пользователя с индексом по полю,
last_sid – id текущей сессии,
expire_sid – дата и время окончания действия сессии
active_till – дата до которой активна публикация данных
is_ban – тип битовое аккаунт заблокирован 1/0

таблица memo c полями
id – тип numeric increment id данных с индексом по полю
uid – тип numeric id пользователя из таблицы users с индексом по полю
data – json данные
last_changed – дата и время последнего изменения данных
public_id – тип numeric id публикации с индексом по полю

2) в php скрипте все в одном файле save.php, не нужно кучи файлов.
прием json структуры в теле запроса (post), пример: { do:auth, login:test@mail.ru, password:test123(передается хэш пароля) }
а) авторизация. прием пост запроса в теле json { do:auth, login:test@mail.ru, password:test123 }
В ответ на авторизацию должен выдаваться в случае удачи json:
{ status:ok, sid:123, expire_sid:2020-01-01T10:01:01, id:1 },
который сохраняет sid и expire_sid в куки и передает их в последующих запросах
в противном случае
{ status:fail, message:'неверный логин или пароль' }
б) регистрация { do:reg, login:test@mail.ru, password:test123, referer:1245 }
Поле ref – refferer
В ответ на регистрацию должен выдаваться такой json:
{ sid:123, expire_sid:2020-01-01T10:01:01 },
в противном случае
{ status:fail, message:'текст ошибки к примеру логин занят или пароль должен содержать определенные символы' }
в) восстановление пароля { do:rem, login:test@mail.ru }
В ответ на восстановление пароля должен выдаваться в случае удачи json:
{ status:ok, message:'ссылка для пароля выслана на емайл, бла бла бла' },
а так же должен быть отправлен емэйл с сылкой на восстановление пароля при переходе по которой
открывается форма для задания нового пароля
ссылка примерно такая recovery=1234567dffdg на этот же php скрипт
для отправки емайл можно использовать дополнительные модули(по согласованию)
в противном случае(случае неудачи) { status:fail, message:'неверный емайл' }
г) если пользователь прошел аутентификацию ему должны быть доступны следующие функции
читать данные и сохранить их в поле memo
{ do:save, sid:123, data:'json данные' }
в ответ либо { status: ok } либо { status: fail, message: 'структура json не валидна' }
{ do:view, id:1 }
в ответ либо { status: ok, data:'json из поля memo' } либо { status: fail, message: 'данные не найдены' }
д) пользователь не прошедший авторизацию может только читать данные
{ do:view, id:1 }

Как видно из описание сессия сделана вручную не php session, поскольку я не знаю точно возможно ли
сделать через php сессии. Если возможно и это вполне встроиться в структуру то хотелось бы уточнить как
это будет выглядеть.

3) html страница cabinet.html должна представлять из себя одностраничное веб приложение с использованием vuejs для редактирования данных и bootstrap для интерфейса.
В нем будут вкладки меню в не авторизованном состоянии:
- авторизация,
- регистрация,
- восстановление пароля.
В авторизованном :
- Профиль,
- Вкладка редактирования данных* ,
- Вкладка настройки публикации данных* ,
- Настройки аккаунта
- выход.
*(по согласованию в отдельном ТЗ и с отдельной доплатой)

4) html страница view.html принимающая на вход public_id данных и отображающая данные

Дополнительно будет предоставлена html (одностраничное приложение) для личного кабинета(из пункта 3), которую нужно будет доработать или на которую можно опираться при создании данного проекта.

Версии программного обеспечения хостинга на котором будет использоваться данный проект. Поэтому код проекта должен быть написан с учетом этого.
Apache 2.2.15-69.el6.centos
PHP 5.3.3-50.el6_10
Perl 5.10.1-144.el6
Kernel 2.6.32-754.24.3.el6.x86_64
Есть возможность создать email ящик на хостинге для отправки ссылки для восстановления пароля.

* В будущем, при Вашем желании, возможны еще задания за отдельную доплату и с отдельным тз по данному проекту.
Раскрыть

Подробная информация видна только авторизированным пользователям

Megakassa