{"id":21667505,"url":"https://github.com/s-4i5/device-auth","last_synced_at":"2025-09-25T10:15:14.922Z","repository":{"id":247679585,"uuid":"826546010","full_name":"S-4I5/device-auth","owner":"S-4I5","description":"Авторизация юзера через пин мобильного приложения","archived":false,"fork":false,"pushed_at":"2024-07-21T20:53:19.000Z","size":98,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-25T08:26:40.185Z","etag":null,"topics":["golang","grpc","jwt-authentication","mciroservice","postgresql","tls"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/S-4I5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-09T23:18:36.000Z","updated_at":"2024-07-28T13:05:25.000Z","dependencies_parsed_at":"2024-07-21T22:10:55.363Z","dependency_job_id":"7017eef9-b795-4504-bec8-288b56db634a","html_url":"https://github.com/S-4I5/device-auth","commit_stats":null,"previous_names":["s-4i5/device-auth"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fdevice-auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fdevice-auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fdevice-auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/S-4I5%2Fdevice-auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/S-4I5","download_url":"https://codeload.github.com/S-4I5/device-auth/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244566937,"owners_count":20473451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["golang","grpc","jwt-authentication","mciroservice","postgresql","tls"],"created_at":"2024-11-25T11:39:20.052Z","updated_at":"2025-09-25T10:15:14.866Z","avatar_url":"https://github.com/S-4I5.png","language":"Go","readme":"# Device Auth\n\n## 1. Description\n\nКластер сервисов, обеспечивающих авторизацию пользователя через мобильный телефон, как это сделано в банковских приложениях\n\n## 2. Deployment\n\n```\n    docker-compose up -d --build\n```\n\n## 3. Quick explanation / Flow\n\nЕсть два сервиса - user-service и device-service\n\nПервый отвечает за работу с пользователя, второй - мобильными телефонами\n\nДля начала нужно зарегистрировать новый device:\nPOST localhost:8081/api/v1/auth/sign-in\n```\n{\n    \"phoneNumber\" : \"+xxx\"\n}\n```\nОн возвращает:\n```\n{\n    \"codeToken\" : \"...\"\n}\n```\nЭто токен, с которым нужно будет подтвердить устройство, используя код, который должен на него придти(в нашем случае он просто будет написан в консоль сервиса, денег на телефонию нет :skull:)\n\nПодтверждаем устройство:\nPATCH localhost:8081/api/v1/auth/verify-device?code={тут код} + codeToken\nПосле запроса придёт уже device токен, с которым далее нужно трогать остальные эндпоинты\n```\n{\n    \"token\" : \"...\"\n}\n```\n\nУстановка пина:\nPATCH localhost:8081/api/v1/auth/set-pin + device token\n```\n{\n    \"pinCode\" : \"123\"\n}\n```\nЕсли всё ок - 200 и пустое тело\n\n\"Привязка\" юзера:\nДля этого необходимо получить токен юзера, которого необходимо привязать. Это можно сделать через /login || /sign-up в user-service //TODO: use something like \"bind token\" instead of user token\nPATCH localhost:8081/api/v1/auth/bind-user + device token\n```\n{\n\"userToken\" : \"...\"\n}\n```\nЕсли всё ок - 200 и пустое тело\n\nДалее можно логиниться:\nPOST localhost:8081/api/v1/auth/login\n```\n{\n    \"pin\" : \"123\"\n}\n```\nИ в ответ получим токен user-a, которому устройство было привязано)\n```\n{\n    \"token\" : \"...\"\n}\n```\n\nЧтобы его проверить, можно получить инфо о юзере в user-service:\nGET localhost:8080/api/v1/user/me\n\nUser-service sign-Up/login:\n\nPOST localhost:8080/api/v1/auth/sign-in:\n```\n{\n\"email\" : \"xxx@gmail.com\",\n\"password\" : \"xxx\",\n\"phoneNumber\" : \"xxx\"\n}\n```\n\nPOST localhost:8080/api/v1/auth/login:\nЕсли указан телефон - ищем пользователя используя его, иначе по почте\n```\n{\n\"email\" : \"xxx@gmail.com\",\n\"password\" : \"xxx\",\n\"phoneNumber\" : \"xxx\"\n}\n```\n\nВ ответ везде получим:\n```\n{\n   \"token\" : \"...\"\n}\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-4i5%2Fdevice-auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs-4i5%2Fdevice-auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-4i5%2Fdevice-auth/lists"}