Aplicação criada com Slim Framework com objetivo de criar autenticação com JWT e aprender sobre o framework Slim

Overview

Slim JWT App

Essa aplicação tem como foco o aprendizado do Framework Slim e também a utilização de JWT.

Como rodar a Aplicação

A aplicação está configurada com docker e um servidor NGIX.

docker-compose up -d -build

Instalando dependencias

Para instalar as dependencias basta acessar o container de PHP

docker-compose exec php bash

E rodar o seguinte comando

php composer install

Subir aplicação outras vezes

Após ter realziado build do docker-compose.yml, basta apenas rodar o comando abaixo nas próximas vezes

docker-compose up -d

Para parar a aplicação rode o comando abaixo:

docker-compose down

Rotas

A aplicação roda localmente em localhost:8080

Para ter informações sobre PHP acesse, localhost:8080/info

Comments
  • [Feature] Adicionando Autenticação JWT

    [Feature] Adicionando Autenticação JWT

    Motivo do PR

    O principal objetivo dessa aplicação é cadastrar usuários e no momento que ele logar retornar um Token JWT. Este PR tem a implementação do fluxo de Login e Implementação do JWT.

    O que foi implementado

    [x] Atualizei os contratos da interface UserRepository [x] Atualizei a classe DoctrineUserRepository adicionando a implementação de findBy [x] Criação da Rota de Login [x] Criação da Action (Controller) para Login [x] Criação do service AuthenticateUser para cuidar da validação de usuário e retornar o JSON [x] Criação do DTO para o caso de uso de Login. [x] Criação do método validatePassword no User para validar se a senha está correta [x] Atualização do nome da interface CreateUserRepository para. UserRepository [x] Atualização do nome da Classe DoctrineCreateUserRepository para DoctrineUserRepository

    Como testar

    Clonar essa branch e fazer uma requisição(POST) para localhost:8080/login com o seguinte payload

    {
    "email": "[email protected]",
    "password": "password@password"
    }
    

    Um ponto importante, as informações acima do usuário email e senha devem estar já criados no banco de dados

    Se tudo der certo será retornado o seguinte payload

    {
        "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTMsInVzZXJuYW1lIjoiTmljb2xhcyAxIiwiZW1haWwiOiJuaWNvbGFzMTIzQGdtYWlsLmNvbSIsImxvZ2luX2F0IjoiMjAyMi0wNi0yOCAwOToyODo1NyJ9.b-UsrDQrW93SJLjkisRL4fBsXN2Du8jNkeIHqoTnujw"
    }
    
    opened by NicolasPereira 2
  • [Added] Adicionando fluxo para criação do usuário

    [Added] Adicionando fluxo para criação do usuário

    Motivo do PR

    É necessário criar a persistência do usuário no sistema!

    O que foi implementado

    Realizei a implementação da rota para a criação do usuário Realizei a implementação do Repositório para a criação de usuário Realizei alterações na camada de serviço para validaçao e adicionando o EntityManager para persistir dados Realizei a elteração para retornar o Response de forma correta

    Como testar

    Clonar essa branch e fazer uma requisição para localhost:8080/users com o seguinte payload

    {
        "name": "nome",
        "email": "[email protected]",
        "password": "password@passwod"
    }
    

    Se tudo der certo será retornado o id do usuário

    opened by NicolasPereira 1
  • [Feature]: Adicionando ToDo no readme.md

    [Feature]: Adicionando ToDo no readme.md

    Motivo do PR

    Para verificar o status do projeto e as próximas atividades adicionei um ToDo list no readme.md

    O que foi implementado

    [x] Adicionei as atividades já feitas e as necessárias no Readme

    Como testar

    Verificar se o Readme.md está correto

    opened by NicolasPereira 0
  • [Refactor] - Fluxo DTO Criação Usuário

    [Refactor] - Fluxo DTO Criação Usuário

    Motivo do PR

    O Marcel Santos fez ricas contribuições neste PR #4 , resolvi implementar as contribuições

    O que foi implementado

    [x] Atualizei os contratos da interface [x] Atualizei a classe UserCreator para ela realizar a criação do User a partir do UserDTO [x] Atualizei a classe UserCreateRepository para que essa classe fique responsável apenas pela persistência

    Como testar

    Clonar essa branch e fazer uma requisição(POST) para localhost:8080/users com o seguinte payload

    {
    "name": "nome",
    "email": "[email protected]",
    "password": "password@passwod"
    }
    

    Se tudo der certo será retornado o id do usuário!

    opened by NicolasPereira 0
  • [Feat] - Adicionando DTO para fluxo de criação do usuário

    [Feat] - Adicionando DTO para fluxo de criação do usuário

    Motivo do PR

    Fiz a implementação de um DTO para o fluxo de criação do usuário para passar dados do back-end para a camada de persistência

    O que foi implementado

    [x] Realizei a criação do CreateUserDTO [x] Implementei o CreateUserDTO na camada de Action (Controller) [x] Implementei o CreateUserDTO na camada de Repository [x] Alterei a implementação do hash de senhas, esse hash agora é criado no User

    Como testar Clonar essa branch e fazer uma requisição(POST) para localhost:8080/users com o seguinte payload

    {
    "name": "nome",
    "email": "[email protected]",
    "password": "password@passwod"
    }
    

    Se tudo der certo será retornado o id do usuário!

    opened by NicolasPereira 0
  • [Feature] - Adicionando hash da senha

    [Feature] - Adicionando hash da senha

    Motivo do PR

    Fiz a implementação de um hash de criptografia para salvar a senha do usuário

    ##O que foi implementado Realizei a criação de uma função privada na classe UserCreator para criptografar a senha. Utilizei a funcionalidade password_hash do PHP para isso utilizando o algoritmo do ARGON2I

    Como testar

    Clonar essa branch e fazer uma requisição(POST) para localhost:8080/users com o seguinte payload

    { "name": "nome", "email": "[email protected]", "password": "password@passwod" } Se tudo der certo será retornado o id do usuário no postman e você deve verificar no banco de dados se o campo password foi salvo como hash

    opened by NicolasPereira 0
  • [Refactor] - Implementando o Principio de Inversão de Dependência

    [Refactor] - Implementando o Principio de Inversão de Dependência

    Motivo do PR

    Para deixar o código seguindo o SOLID, resolvi implementar o Principio de Inversão de Depêndencia

    O que foi implementado

    Realizei a criação da interface para definir os contratos Realizei a criação de um repositório que implementa a interface Realizei a inversão de depêndencia no dependencies.php

    Como testar

    Clonar essa branch e fazer uma requisição para localhost:8080/users com o seguinte payload

    {
        "name": "nome",
        "email": "[email protected]",
        "password": "password@passwod"
    }
    

    Se tudo der certo será retornado o id do usuário

    opened by NicolasPereira 0
Owner
Nicolas Pereira
21 anos | FullStack Web Dev | JS | PHP
Nicolas Pereira
Proyecto para aprender a utilizar privilegios (roles y permisos) con CRUDBooster

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Informática DP 3 May 9, 2022
A PHP boilerplate based on Slim Framework, for start projects with Eloquent ORM, Validation, Auth (JWT), Repositories and Transformers ready

A PHP boilerplate based on Slim Framework, for start projects with Eloquent ORM, Validation, Auth (JWT), Repositories and Transformers ready.

Damiano Petrungaro 58 Aug 10, 2022
Simple JWT Auth support for Laravel PHP Framework

Laravel JWT Simple JWT Auth for Laravel PHP Framework using Firebase JWT under the hood. Installation Standard Composer package installation: composer

Ricardo Čerljenko 34 Nov 21, 2022
JWT auth for Laravel and Lumen

JWT Artisan Token auth for Laravel and Lumen web artisans JWT is a great solution for authenticating API requests between various services. This packa

⑅ Generation Tux ⑅ 141 Dec 21, 2022
Laravel Auth guard for FusionAuth JWT

Laravel FusionAuth JWT Implement an Auth guard for FusionAuth JWTs in Laravel. It ships with also a middleware to check against the user role. Install

Theraloss 7 Feb 21, 2022
Security Defense for Firebase's PHP-JWT Library

PHP-JWT-Guard Protect your code from being impacted by issue 351 in firebase/php-jwt. Installation First, install this library with Composer: composer

Paragon Initiative Enterprises 8 Nov 27, 2022
Probando JWT en Laravel

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

SelsiusRC28 1 Nov 2, 2021
Rest API - JWT - Symfony5

Symfony5 JWT - REST API Example Symfony5 JWT - REST API Example Built With PHP Symfony 5 PostgreSQL Getting Started This is an example of how you may

Salih Gencer 1 Dec 24, 2021
PSR-7 and PSR-15 JWT Authentication Middleware

PSR-7 and PSR-15 JWT Authentication Middleware This middleware implements JSON Web Token Authentication. It was originally developed for Slim but can

Mika Tuupola 782 Dec 18, 2022
PHP package for JWT

PHP-JWT A simple library to encode and decode JSON Web Tokens (JWT) in PHP, conforming to RFC 7519. Installation Use composer to manage your dependenc

Firebase 8.6k Jan 7, 2023
Laravel JWT-Authentication API starter kit for rapid backend prototyping.

Laravel JWT API A Laravel JWT API starter kit. Features Laravel 8 Login, register, email verification and password reset Authentication with JWT Socia

Oybek Odilov 3 Nov 6, 2022
Single file PHP that can serve as a JWT based authentication provider to the PHP-CRUD-API project

Single file PHP that can serve as a JWT based authentication provider to the PHP-CRUD-API project

Maurits van der Schee 163 Dec 18, 2022
JSON Web Token (JWT) for webman plugin

JSON Web Token (JWT) for webman plugin Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。

 ShaoBo Wan(無尘) 25 Dec 30, 2022
JWT Authenticator for symfony

HalloVerdenJwtAuthenticatorBundle This bundle provides a JWT authenticator for Symfony applications. It's using PHP JWT Framework for parsing and vali

Hallo Verden 0 Jul 8, 2022
Slim Auth is an authorization and authentication library for the Slim Framework.

Slim Auth is an authorization and authentication library for the Slim Framework. Authentication is provided by the Zend Framework Zend\Authentication component, and authorization by the Zend Framework Zend\Permissions\Acl component.

Jeremy Kendall 246 Dec 16, 2022
Routes and Middleware for Using OAuth2 Server within a Slim Framework API

Chadicus\Slim\OAuth2 A collection of OAuth2 Server routes, middleware and utilities for use within a Slim 3 Framework API Requirements Chadicus\Slim\O

Chad Gray 126 Oct 8, 2022
PHP whoops error on slim framework

Slim whoops PHP whoops error on slim framework Status Installation Install the composer curl -sS https://getcomposer.org/installer | php Edit compose

Zeuxis 130 Nov 25, 2022
UserFrosting is a secure, modern user management system written in PHP and built on top of the Slim Microframework, Twig templating engine, and Eloquent ORM.

UserFrosting is a secure, modern user management system written in PHP and built on top of the Slim Microframework, Twig templating engine, and Eloquent ORM.

UserFrosting 1.6k Jan 1, 2023
Multi-provider authentication framework for PHP

Opauth is a multi-provider authentication framework for PHP, inspired by OmniAuth for Ruby. Opauth enables PHP applications to do user authentication

Opauth – PHP Auth Framework 1.7k Jan 1, 2023