Git Product home page Git Product logo

laminasuser's Introduction

LaminasUser

Created by Flávio Gomes da Silva Lisboa from ZfcUser

Introduction

LaminasUser is a user registration and authentication module for Laminas. Out of the box, LaminasUser works with Laminas\Db, however alternative storage adapter modules are available (see below). LaminasUser provides the foundations for adding user authentication and registration to your Laminas site. It is designed to be very simple and easy to extend.

More information and examples are available on the Laminas Wiki

Storage Adapter Modules

By default, LaminasUser ships with support for using Laminas\Db for persisting users.

Requirements

Features / Goals

  • Authenticate via username, email, or both (can opt out of the concept of username and use strictly email) [COMPLETE]
  • User registration [COMPLETE]
  • Forms protected against CSRF [COMPLETE]
  • Out-of-the-box support for Doctrine2 and Laminas\Db [COMPLETE]
  • Robust event system to allow for extending [COMPLETE]
  • Provide ActionController plugin and view helper [COMPLETE]

Installation

Main Setup

By cloning project

  1. Install the LaminasBase Laminas module by cloning it into ./vendor/.
  2. Clone this project into your ./vendor/ directory.

With composer

  1. Add this project and LaminasBase in your composer.json:

    "require": {  
        "fgsl/laminas-user": "^0.2.0"  
    }  
  2. Now tell composer to download LaminasUser by running the command:

    $ php composer.phar update

Post installation

  1. Enabling it in your modules.config.phpfile.

    <?php
    return [
        'modules' => [
            // ...
            'LaminasUser',
        ],
        // ...
    ];
  2. Then Import the SQL schema located in ./vendor/zf-commons/laminas-user/data/schema.sql (if you installed using the Composer) or in ./vendor/LaminasUser/data/schema.sql.

Post-Install: Laminas\Db

  1. If you do not already have a valid Laminas\Db\Adapter\Adapter in your service manager configuration, put the following in ./config/autoload/database.local.php:
<?php
return [
    'db' => [
        'driver'    => 'PdoMysql',
        'hostname'  => 'changeme',
        'database'  => 'changeme',
        'username'  => 'changeme',
        'password'  => 'changeme',
    ],
    'service_manager' => [
        'factories' => [
            'Laminas\Db\Adapter\Adapter' => 'Laminas\Db\Adapter\AdapterServiceFactory',
        ],
    ],
];

Navigate to http://yourproject/user and you should land on a login page.

Password Security

DO NOT CHANGE THE PASSWORD HASH SETTINGS FROM THEIR DEFAULTS unless A) you have done sufficient research and fully understand exactly what you are changing, AND B) you have a very specific reason to deviate from the default settings.

If you are planning on changing the default password hash settings, please read the following:

The password hash settings may be changed at any time without invalidating existing user accounts. Existing user passwords will be re-hashed automatically on their next successful login.

WARNING: Changing the default password hash settings can cause serious problems such as making your hashed passwords more vulnerable to brute force attacks or making hashing so expensive that login and registration is unacceptably slow for users and produces a large burden on your server(s). The default settings provided are a very reasonable balance between the two, suitable for computing power in 2013.

Options

The LaminasUser module has some options to allow you to quickly customize the basic functionality. After installing LaminasUser, copy ./vendor/fgsl/laminas-user/config/laminasuser.global.php.dist to ./config/autoload/laminasuser.global.php and change the values as desired.

The following options are available:

  • user_entity_class - Name of Entity class to use. Useful for using your own entity class instead of the default one provided. Default is ZfcUser\Entity\User.
  • enable_username - Boolean value, enables username field on the registration form. Default is false.
  • auth_identity_fields - Array value, specifies which fields a user can use as the 'identity' field when logging in. Acceptable values: username, email.
  • enable_display_name - Boolean value, enables a display name field on the registration form. Default value is false.
  • enable_registration - Boolean value, Determines if a user should be allowed to register. Default value is true.
  • login_after_registration - Boolean value, automatically logs the user in after they successfully register. Default value is false.
  • use_registration_form_captcha - Boolean value, determines if a captcha should be utilized on the user registration form. Default value is true. (Note, right now this only utilizes a weak Laminas\Text\Figlet CAPTCHA, but I have plans to make all Laminas\Captcha adapters work.)
  • login_form_timeout - Integer value, specify the timeout for the CSRF security field of the login form in seconds. Default value is 300 seconds.
  • user_form_timeout - Integer value, specify the timeout for the CSRF security field of the registration form in seconds. Default value is 300 seconds.
  • use_redirect_parameter_if_present - Boolean value, if a redirect GET parameter is specified, the user will be redirected to the specified URL if authentication is successful (if present, a GET parameter will override the login_redirect_route specified below).
  • login_redirect_route String value, name of a route in the application which the user will be redirected to after a successful login.
  • logout_redirect_route String value, name of a route in the application which the user will be redirected to after logging out.
  • password_cost - This should be an integer between 4 and 31. The number represents the base-2 logarithm of the iteration count used for hashing. Default is 10 (about 10 hashes per second on an i5).
  • enable_user_state - Boolean value, enable user state usage. Should user's state be used in the registration/login process?
  • default_user_state - Integer value, default user state upon registration. What state user should have upon registration?
  • allowed_login_states - Array value, states which are allowing user to login. When user tries to login, is his/her state one of the following? Include null if you want user's with no state to login as well.

Changing Registration Captcha Element

NOTICE These instructions are currently out of date.

By default, the user registration uses the Figlet captcha engine. This is because it's the only one that doesn't require API keys. It's possible to change out the captcha engine with DI. For example, to change to Recaptcha, you would add this to one of your configuration files (global.config.php, module.config.php, or a dedicated recaptcha.config.php):

<?php
// ./config/autoload/recaptcha.config.php
return [
    'di'=> [
        'instance'=> [
            'alias'=> [
                // OTHER ELEMENTS....
                'recaptcha_element' => 'Laminas\Form\Element\Captcha',
            ],
            'recaptcha_element' => [
                'parameters' => [
                    'spec' => 'captcha',
                    'options'=> [
                        'label'      => '',
                        'required'   => true,
                        'order'      => 500,
                        'captcha'    => [
                            'captcha' => 'ReCaptcha',
                            'privkey' => RECAPTCHA_PRIVATE_KEY,
                            'pubkey'  => RECAPTCHA_PUBLIC_KEY,
                        ],
                    ],
                ],
            ],
            'LaminasUser\Form\Register' => [
                'parameters' => [
                    'captcha_element'=>'recaptcha_element',
                ],
            ],
        ],
    ],
];

laminasuser's People

Contributors

fgsl avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

laminasuser's Issues

Probleminha com a documentação

Ao seguir a documentação para instalação via composer:

"require": {  
    "fgsl/laminas-user": "^3.0"  
}  

Retorna a seguinte mensagem:

Your requirements could not be resolved to an installable set of packages.
Problem 1

  • The requested package fgsl/laminas-user ^3.0 exists as fgsl/laminas-user[0.1.0, 0.2.0, dev-master, 0.1.x-dev] but these are rejected by your constraint.

composer require fgsl/laminas-user resolvi assim! 👍

Uma dúvida ante p/ utilizar ZfcUser c/ Doctrine utilizava ZfcUserDoctrineORM, esse outro pacote será atualizado?

Obrigado, ótima iniciativa a conversão!

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.