Giter Site home page Giter Site logo

user-service's Introduction

Spring Boot, Spring Security, JWT, JPA, PostgreSQL, FlywayDB, Rest API

Сервис пользовательских данных.

Вся информация о пользователях хранится в PostgreSQL, пароли хешируются с использованием BCrypt.

Первичная аутентификация выполняется вводом логина и пароля, при успешном входе в систему будет сгенерирован JSON Web Token (JWT) - токен со сроком действия 24 часа.

В сервисе реализовано несколько API endpoint, часть из которых доступна только пользователям с ролью ADMIN. Предварительная аутентификация не требуется только при запросах к endpoint-ам регистрации/логина.

Реализована интеграция с FlywayDB - добавлены миграции, которые создают необходимые таблицы ролей (admin, user, moderator) и несколько пользователей. Файлы интеграции расположены в src/main/resources/db/migration. Для применения миграций нужно раскомментировать строки в конфигурационном файле application.properties. Пользователи с ролью администратора создаются с паролем adminpass, остальные - с паролем userpass

Используются Spring Boot, Spring Security, JWT, JPA, PostgreSQL, FlywayDB, Rest API.

Инструкция по установке

1. Склонировать репозиторий

git clone https://github.com/priorgnewb/user-service.git

2. Создать базу данных PostgreSQL

create database taskdb
  • run src/main/resources/taskdb.sql

3. Указать имя и пароль пользователя PostgreSQL

  • открыть src/main/resources/application.properties
  • изменить spring.datasource.username и spring.datasource.password на значения, используемые вами в PostgreSQL

4. Запустите приложение, используя Maven

mvn spring-boot:run

Приложение доступно по URL http://localhost:8080

Тестирование Rest APIs

Сервис предоставляет следующие CRUD APIs:

Аутентификация

Метод URL Описание Валидный шаблон для запроса
POST /api/auth/signup Зарегистрироваться JSON
POST /api/auth/signin Войти JSON

Действия над пользователями

Метод URL Описание Валидный шаблон для запроса
GET /api/users/my Показать профиль текущего пользователя
GET /api/users/{username}/profile Показать профиль пользователя с указанным username
POST /api/users Создать пользователя (для администраторов) JSON
PUT /api/users/{username} Обновить профиль пользователя (для пользователя, вошедшего в систему, и для администраторов) JSON
DELETE /api/users/{username} Удалить профиль пользователя (для пользователя, вошедшего в систему, и для администраторов)
PUT /api/users/{username}/giveAdmin Установить пользователю роль администратора (для администраторов)
PUT /api/users/{username}/takeAdmin Отозвать у пользователя роль администратора (для администраторов)

Служебные действия (для администраторов)

Метод URL Описание
GET /api/admin/allusers Показать список всех пользователей
GET /api/admin/roles Показать список доступных для назначения ролей
GET /api/admin/alladmins Показать список администраторов сервиса
GET /api/admin/alladminsid Показать список ID администраторов сервиса

Тестирование API возможно выполнять в Postman или в другом REST-клиенте.

Валидные шаблоны запросов в формате JSON

{
  "username": "Aleksey",
  "email": "[email protected]",
  "password": "alExDevve"
}
{
  "username": "Aleksey",
  "password": "alExDevve"
}
{
    "username": "egorlk",
    "email": "[email protected]",
    "password":"Pas1E!goR"
}
{
  "username": "Aleksey",
  "email": "[email protected]",
  "password": "alExDevveNeWpAs!woRd"
}

user-service's People

Contributors

priorgnewb avatar

Watchers

 avatar

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.