NAME

Ado::Plugin::Auth - Authenticate users

SYNOPSIS

#in ado.${\$app->mode}.conf
plugins =>[
  #...
  {name => 'auth', config => {
      auth_methods =>['ado', 'facebook',...],
      routes => [...]
    }
  }
  #...
]

DESCRIPTION

Ado::Plugin::Auth is a plugin that authenticates users to an Ado system. Users can be authenticated locally or using (TODO!) Facebook, Google, Twitter and other authentication service-providers.

OPTIONS

The following options can be set in etc/ado.conf. You can find default options in etc/plugins/auth.conf.

auth_methods

This option will enable the listed methods (services) which will be used to authenticate a user. The services will be listed in the specified order in the partial template authbar.html.ep that can be included in any other template on your site.

#in ado.${\$app->mode}.conf
plugins =>[
  #...
  {name => 'auth', config => {
      auth_methods =>['ado', 'facebook',...]
    }
  }
  #...
]

CONDITIONS

Ado::Plugin::Auth provides the following conditions to be used by routes. To find more about conditions read "Conditions" in Mojolicious::Guides::Routing.

authenticated

Condition for routes used to check if a user is authenticated. Additional parameters can be passed to specify the preferred authentication method to be preselected in the login form if condition redirects to /login/:auth_method.

# add the condition programatically
$app->routes->route('/ado-users/:action', over => {authenticated=>1});
$app->routes->route('/ado-users/:action', 
  over => [authenticated => 1, authz => {group => 'admin'}]
);

#in ado.conf or ado.${\$app->mode}.conf
routes => [
  #...
  {
    route => '/ado-users/:action:id',
    via   => [qw(PUT DELETE)],
    
    # only authenticated users can edit and delete users,
    # and only if they are authorized to do so
    over => [authenticated => 1, authz => {group => 'admin'}],
    to =>'ado-users#edit'
  }
],

HELPERS

Ado::Plugin::Auth provides the following helpers for use in Ado::Control methods and templates.

ROUTES

Ado::Plugin::Auth provides the following routes (actions):

/login

/login/:auth_method

If accessed using a GET request displays a login form. If accessed via POST performs authentication using :auth_method.

/logout

Expires the session and redirects to the base URL.

$c->logout();

TEMPLATES

Ado::Plugin::Auth embeds the following templates. You can run ado inflate and modify them. Usage examples can be found at http://localhost:3000 after starting ado.

partials/authbar.html.ep

Renders a menu dropdown for choosing methods for signing in.

partials/login_form.html.ep

Renders a Login form.

login.html.ep

Renders a page containing the login form.

METHODS

Ado::Plugin::Auth inherits all methods from Ado::Plugin and implements the following new ones.

register

This method is called by $app->plugin. Registers the plugin in Ado application and merges authentication configuration from $MOJO_HOME/etc/ado.conf with settings defined in $MOJO_HOME/etc/plugins/auth.conf. Authentication settings defined in ado.conf will overwrite those defined in plugins/auth.conf.

TODO

The following authentication methods are in the TODO list: facebook, linkedin, google. Others may be added later.

SEE ALSO

Ado::Plugin, Ado::Manual::Plugins, Mojolicious::Plugins, Mojolicious::Plugin, "Conditions" in Mojolicious::Guides::Routing

SPONSORS

The original author

AUTHOR

Красимир Беров (Krasimir Berov)

COPYRIGHT AND LICENSE

Copyright 2014 Красимир Беров (Krasimir Berov).

This program is free software, you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License v3 (LGPL-3.0). You may copy, distribute and modify the software provided that modifications are open source. However, software that includes the license may release under a different license.

See http://opensource.org/licenses/lgpl-3.0.html for more information.