Skip to content

tfiamietsh/spring-rest-jwt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Spring Boot REST API Backend with JWT Auth

ОписаниС

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” REST API сСрвис Π½Π° Spring Boot с JWT Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ рСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π»ΠΎΠ³ΠΈΠ½ с Π²Ρ‹Π΄Π°Ρ‡Π΅ΠΉ JWT. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Ρ€ΠΈ Ρ€ΠΎΠ»ΠΈ со строгой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠ΅ΠΉ с Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ доступа:

  • ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ β€” ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ΡŒ посты.
  • ΠœΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€ β€” ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ посты ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ посты Π½Π° рассмотрСнии.
  • Администратор β€” ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π΄ΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

  • РСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ
  • Π›ΠΎΠ³ΠΈΠ½ с Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ JWT
  • Валидация Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π»ΠΎΠ³ΠΈΠ½Π°, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пароля)
  • Π ΠΎΠ»ΠΈ с Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ доступа
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ролями администраторами
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ постами ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ
  • ВСстированиС основных сСрвисов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

  • Java 17
  • Spring Boot
  • Spring Security
  • JPA / Hibernate
  • Postgres
  • JUnit / Mockito для тСстирования

Установка ΠΈ запуск

  1. ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
  2. НастройтС application.properties (конфигурация Π‘Π”, JWT-сСкрСт ΠΈ Ρ‚.Π΄.)
  3. ЗапуститС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ mvnw spring-boot:run
  4. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Postman ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для тСстирования API

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов

  • РСгистрация: POST /auth/register
  • Π›ΠΎΠ³ΠΈΠ½: POST /auth/login
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка постов: GET /posts
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ поста (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ): POST /posts/suggest
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка постов Π½Π° рассмотрСнии (ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€): GET /posts/pending
  • ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ поста (ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€): PATCH /posts/publish/{postId}
  • ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π°Π΄ΠΌΠΈΠ½): PATCH /admin/promote/{userId}
  • ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π°Π΄ΠΌΠΈΠ½): GET /admin/users

ВСстированиС

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ ΡŽΠ½ΠΈΡ‚ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ тСстами для основных ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ сСрвисов.