Giter Site home page Giter Site logo

design-pattern-python's Introduction

Python Version Coverage Status License

Sistema de Gerenciamento de Usuários

Este projeto é um sistema de gerenciamento de usuários desenvolvido em Python, que utiliza padrões de projeto e princípios SOLID para garantir flexibilidade, manutenção e segurança na criação e gestão de diferentes tipos de usuários.

Funcionalidades

  • Criação e gestão de diferentes tipos de usuários (Admin, Regular, Guest)
  • Utilização do padrão Builder para facilitar a criação de usuários
  • Implementação de diferentes estratégias de criptografia de senhas
  • Facade para simplificar a criação de usuários

Instalação

Siga os passos abaixo para configurar o ambiente e executar o projeto.

Pré-requisitos

  • Python 3.x instalado

Configuração do Ambiente Virtual

  1. Crie um ambiente virtual (venv):

    python -m venv venv
  2. Ative o ambiente virtual:

    • No Windows:

      venv\Scripts\activate
    • No macOS/Linux:

      source venv/bin/activate

Instalação de Dependências

Instale as dependências necessárias:

pip install bcrypt

Configuração das Variáveis de Ambiente

Defina as seguintes variáveis de ambiente:

  • No Windows:
set PASSWORDADMIN="my secret admin"
set PASSWORDREGULAR="my secret regular"
set PASSWORDGUEST="my secret guest"
set MINHA_CHAVE_SECRETA="minha chave secreta"
set MINHA_OUTRA_SECRETA="minha outra secreta"
  • No macOS/Linux:
export PASSWORDADMIN="my secret admin"
export PASSWORDREGULAR="my secret regular"
export PASSWORDGUEST="my secret guest"
export MINHA_CHAVE_SECRETA="minha chave secreta"
export MINHA_OUTRA_SECRETA="minha outra secreta"

Executando o Projeto

Após configurar o ambiente virtual e instalar as dependências, você pode executar o projeto conforme necessário. No terminal, digitar o comando:

python main.py

Estrutura do Projeto

  • users.py: Define a classe abstrata Users e suas subclasses AdminUser, RegularUser e GuestUser.
  • users_builder.py: Implementa o padrão Builder para a criação de usuários.
  • password_strategy.py: Define diferentes estratégias de criptografia de senhas.
  • user_facade.py: Facade para simplificar a criação de usuários.

Princípios SOLID Aplicados

  • Single Responsibility Principle (SRP): Cada classe tem uma única responsabilidade. Por exemplo, a classe Users gerencia dados do usuário, enquanto a classe PasswordStrategy lida com a criptografia.
  • Open/Closed Principle (OCP): As classes estão abertas para extensão, mas fechadas para modificação. Por exemplo, novas estratégias de criptografia podem ser adicionadas sem alterar as classes existentes.
  • Liskov Substitution Principle (LSP): As subclasses (AdminUser, RegularUser, GuestUser) podem ser usadas como substitutas da classe base Users sem alterar o comportamento esperado do programa.
  • Interface Segregation Principle (ISP): As interfaces são específicas para cada propósito, como a PasswordStrategy, que define métodos necessários para qualquer estratégia de criptografia.
  • Dependency Inversion Principle (DIP): O código depende de abstrações (interfaces) em vez de implementações concretas. A classe GeneratePassword usa a interface PasswordStrategy para aplicar diferentes estratégias de criptografia.

design-pattern-python's People

Contributors

devedsonbelem avatar

Watchers

 avatar

Forkers

ubiratantavares

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.