NAME

Yancy::Plugin::Auth::Github - Authenticate using Github's OAuth2 provider

VERSION

version 1.052

SYNOPSIS

use Mojolicious::Lite;
plugin Yancy => {
    backend => 'sqlite://myapp.db',
};
app->yancy->plugin( 'Auth::Github' => {
    client_id => 'CLIENT_ID',
    client_secret => $ENV{ OAUTH_GITHUB_SECRET },
    schema => 'users',
    username_field => 'username',
    # TODO: Get other user information from Github, requesting
    # scopes if necessary
} );

DESCRIPTION

This module allows authenticating using the Github OAuth2 API.

This module extends the Yancy::Auth::Plugin::OAuth2 module to add Github features.

This module composes the Yancy::Auth::Plugin::Role::RequireUser role to provide the require_user authorization method.

METHODS

current_user

Returns the user row of the currently-logged-in user.

login_form

Get a link to log in using Github.

CONFIGURATION

This plugin has the following configuration options.

client_id

The client ID, provided by Github.

client_secret

The client secret, provided by Github.

login_label

The label for the button to log in using Github. Defaults to Login with Github.

Sessions

This module uses Mojolicious sessions to store the login information in a secure, signed cookie.

To configure the default expiration of a session, use Mojolicious::Sessions default_expiration.

use Mojolicious::Lite;
# Expire a session after 1 day of inactivity
app->sessions->default_expiration( 24 * 60 * 60 );

HELPERS

This plugin has the following helpers.

yancy.auth.current_user

Get the current user from the session, if any. Returns undef if no user was found in the session.

my $user = $c->yancy->auth->current_user
    || return $c->render( status => 401, text => 'Unauthorized' );

yancy.auth.require_user

Validate there is a logged-in user and optionally that the user data has certain values. See "require_user" in Yancy::Plugin::Auth::Role::RequireUser.

yancy.auth.login_form

Returns the rendered login button.

TEMPLATES

yancy/auth/github/login_form.html.ep

Display the button to log in using Github.

layouts/yancy/auth.html.ep

The layout that Yancy uses when displaying the login form, the unauthorized error message, and other auth-related pages.

SEE ALSO

Yancy::Plugin::Auth, Yancy::Plugin::Auth::OAuth2

AUTHOR

Doug Bell <preaction@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2019 by Doug Bell.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.