-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[#80] GitHub authorization #285
base: main
Are you sure you want to change the base?
Conversation
@fey @Malcom1986 Hey! |
@d1z3d |
@fey I redeployed a last commit. Now it works |
Still cant enter to deployed demo |
@d1z3d please add instruction to readme how to setup Github login |
@fey i deployed to another service - https://d1z3d-hexlet-correction.onrender.com. Try it, please. |
@d1z3d cant load demo :C Please add inctruction, we ll check auth on local |
README.md
Outdated
@@ -25,6 +25,23 @@ To build the final jar: | |||
make build | |||
``` | |||
|
|||
### How to add a OAuth2 app for local development | |||
Before starting local development, you must create an OAuth application and add clientID and clientSecret to application.yaml: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This file is in Git, so changing it may cause us to accidentally run the changed file. Let's think about how we can avoid this. But in general, it could be that for local development we just set the right values, but for projection we set different values - will this work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@fey Hey!
This file is in Git, so changing it may cause us to accidentally run the changed file. Let's think about how we can avoid this
To be honest, i dont get what do you mean. If you mean that other people will have to solve conflicts while pushing new changes from their own branches because files will be a different. So they can do merge it before push. I done it before i open the pr. To avoid this I can add a custom exception while building project to be done the check and don't change a README file. Will this option work for you?
But in general, it could be that for local development we just set the right values, but for projection we set different values - will this work?
I added 2 instructions: to local delopment and to deploy the project. A Dockerfile uses the production profile. See application-prod.yaml
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See, usually the files that need to be changed for local development are not versioned. These are different configuration files, settings that are specific to the environment and to the developer. For example, it could be the Github settings with which the connection is made. Then let's think about it, maybe just create a Github application for authorization locally.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@d1z3d it only works for login, not for registration? I want to log in via Github, no accounts. But it won't let me in. No error handling. In other services, we register a user if a user from Github is not registered on the service. |
@fey hey! |
@d1z3d yea, i dont have public email. may be should be ssomething to fix that. Because i can register account with github on other services (can you try sicp, cv?) |
I done that when I had a token from GitHub. With that I took private emails. I couldn't do it without the token. |
I got private emails without public email but I used some custom requests for it via GitHub token. I will send changes while few days |
@fey hey! |
@d1z3d |
Hey! @fey, I add link on signup page. @Malcom1986, I done with this issue. I read about testing oauth2 but I don't know how I can test it. I mean I can mock all requests to authenticate but I don't see reasons. |
@d1z3d you can read tests in hexlet-sicp with same task https://github.com/Hexlet/hexlet-sicp/blob/main/tests/Feature/Http/Controllers/Auth/Social/GithubControllerTest.php |
@d1z3d Приветствую, Андрей! Попробовал локально поднять приложение. Что-то не совсем коррекно работает. Регистрация через гитхаб проходит успешно. Потом выхожу из аккаунта и пытаюсь зайти через гитхаб. Ссылка на странице входа ведет опять на регистрацию |
Кстати при повторной регистрации получается 500 ошибка и не понятно что произошло. Нужно сообщить, что такой пользователь уже существует |
По идее логика входа должна быть такой
|
@Malcom1986 Максим, проблему понял. Я изменил логику для повторного входа. Т.е. если пользователь входит повторно, то сделал обновление данных УЗ. Видимо нужно достать пользователя по ID и уже менять его. Но по комментарию @fey Николая понял, что делать этого не нужно. Скорректирую обратно. Нужно было спросить прежде, чем делать) Попробовал локально с проверкой существующего пользователя. Проблемы при повторном входе не возникло. Сбросил кеш. Смог войти успешно снова. Также уберу handler при неуспешной аутентификации. Он не отработал. Попробую добавить кастомный фильтр для отлова ошибок при регистрации. @fey Николай, изучу тесты и добавлю по аналогии. |
@Malcom1986, @fey, Максим, Николай, здравствуйте! |
Автогенерирумые фалы типа AccountMapperImpl.java попали как-то в репозиторий. Они же должны быть в диретории build и соответственно не пушитья в репозиторий |
А вот такую статью смотрели по тестам? https://www.baeldung.com/spring-oauth-testing-access-control |
@Malcom1986 Максим, добрый день! |
@Malcom1986, Максим, внес правки. Автогенерируемые файлы создаются в "../src/main/generated/**". Я добавил правило для игнорирования файлов в .gitignore. @fey, Николай, хотел бы подсветить сразу потенциальную проблему. В данном проекте есть функционал по изменению email-а. Это будет создавать проблемы.
Также это актуально, если пользователь поменяет email на hexlet-correction, но не на GitHub. При этом пользователь не сможет войти под своей учеткой, потому что не знает пароль. В первом случае, проблему можно решить, если добавить еще проверку по username и обновлять данные. Но username также можно скорректировать. В общем и целом, это должен быть id пользователя, потому что он уже не поменяется. Этого поля не хватает. |
@d1z3d а как на hexlet-cv, code-basics работает? |
Сравнивал как раз с hexlet-cv. У меня нет возможности скорректировать email. |
@d1z3d а можете посмотреть. как в самом Хекслете? ru.hexlet.io |
@d1z3d Посмотрите, предоставляет ли Github какие-то дополнительные данные, которые нельзя подменить?
|
@d1z3d Я поспрашивал у разработчиков Хекслета:
|
Про то, что не хватает id пользователя - я имел в виду, что его не хватает в таблице бд для его сохранения. Из гитхаба он приходит. |
Ок, теперь мне нужно это осознать) |
@d1z3d я себе так это представляю) |
Ок. Продолжу работу после 23 сентября. |
Продолжил дальше заниматься задачей |
@fey, добрый день! |
No description provided.