Giter Club home page Giter Club logo

backend-tz3's People

Contributors

maxfarseer avatar mkitez avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

backend-tz3's Issues

Токен для авторизации

Какой именно нужен токен для авторизации, а то:

{
  "error": "Bad Google cliend ID"
}

или

{
  "error": "Invalid Value"
}

ошибка docker-compose up

не могу нормально запустить докер.... свагер и монго запускаются, но не сервер.
Может банальная ошибка, но пока никак с ней не справлюсь..

вот лог..

backend_1  | npm WARN deprecated [email protected]: It is recommended to install Yarn using the native installation method for your environment. See https://yarnpkg.com/en/docs/install
backend_1  | npm WARN [email protected] No repository field.
backend_1  | 
backend_1  | npm ERR! code E404
backend_1  | npm ERR! 404 Not Found: flatmap-stream@https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.2.tgz
backend_1  | 
backend_1  | npm ERR! A complete log of this run can be found in:
backend_1  | npm ERR!     /root/.npm/_logs/2018-11-28T20_55_46_736Z-debug.log
backend_1  | start.sh: line 10: ./node_modules/yarn/bin/yarn: No such file or directory
backend_1  | start.sh: line 11: ./node_modules/yarn/bin/yarn: No such file or directory
backendtz3_backend_1 exited with code 127

Нам нужен user._id !!!

Суть пробемы:

На всех endpoint'ах связанных c аутентификацией - в респонсе сервера мы получаем только JWT, без user_id

Почему это проблема:

Нам необходимо качественно определить является ли пользователь автором новости или нет (Что важно для возможности редактирования или удаления и вообще отображения кнопок или иконок).

Почему не стоит привязываться в полю displayName.

Это поле находится в feed.creator (лежит рядом с id)
Получаем с

get <api url>/news/feeds 
get <api url>/news/feeds/:id)

Его легко получить с каждой новоcти, также легко получить если пользователь зашел через Google Oauth2 -> googleUser.getBasicProfile().getName()

НО!

  1. оно не является уникальным, что критически важно для определения автора.
  2. если заходим без гугл auth (recapcha sign up / sign in ) мы его получить не можем.
    разве что догадаться, что dispalyName будет полем username и запомнить его когда пользователь заходит или регистрируется (что как по мне плохой вариант решения).

Как можно получить user._id на данном этапе.

Единственный способ получить айди пользователя, что вошел, это получить список новостей, и последовательно ломиться на endpoint

get <api url>/news/user/:id  (этот айди берем из feed.creator._id)

если сервер ответит с кодом респонса 200 - значит это наш айди, так как получить данные по этому endpoint может только пользователь с JWT, который относится к этому аккаунту.

То есть решение является ужасным костылем, так как в худшем случае количество запросов на сервер будет равно количеству новостей, только для того, чтобы "ПОПЫТАТЬСЯ" найти id нашего пользователя.

Причем если не нашли значит у пользователь не постил ни одной записи.

Пути решения:

  1. возращать на всех endpoint`ах где возращается jwt еще и id пользователя.
  2. добавить endpoint
get <api url>/user-id
header: { 
    'x-acces-token': jwt
} 

на котором проверятеся jwt и если такой пользователь существует - то вернуть его id в респонсе.

PS

Возможно я ошибаюсь и просто не вижу правильного решения.

Если я прав, могу попробовать дописать backend используя один из предложенных мной путей решения, или же другой путь, предложенный кем-то еще, если он будет значительно лучше.

401 при авторизации с reCaptcha

Посылаю POST-запрос с токеном рекапчи на /users, в ответ приходит Error: Request failed with status code 401.
Как я понял, нужно сделать авторизацию с Secret-key от рекапчи в сваггере.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.