root/trunk/mixiComment/plugins/mixiComment/lib/mixiComment/App.pm @ 971

Revision 971, 1.5 kB (checked in by fumiakiy, 15 months ago)

Importing mixiComment plugin. This plugin enables Movable Type to levarage mixi OpenID Provider as another commenter authenticator.

Line 
1package mixiComment::App;
2
3use strict;
4use mixiComment::Auth::mixi;
5
6sub login_blog_owner {
7    my $app = shift;
8
9    $app->param('verify_blog_owner', 1);
10    mixiComment::Auth::mixi->login($app);
11}
12
13sub verify_blog_owner {
14    my $app = shift;
15    my $q   = $app->param;
16
17    my $plugin = $app->component('mixicomment');
18    return $app->errtrans('Invalid request') unless $plugin;
19
20    my $blog_id = $q->param('blog_id');
21    my $blog    = $app->model('blog')->load($blog_id);
22    return $app->errtrans('Invalid blog') unless $blog;
23
24    my %param = $app->param_hash;
25    my $csr   = MT::Auth::OpenID::_get_csr(\%param, $blog)
26        or return $app->errtrans('Invalid request');
27
28    if ( my $setup_url = $csr->user_setup_url( post_grant => 'return' ) ) {
29        return $app->redirect($setup_url);
30    }
31    elsif ( my $vident = $csr->verified_identity ) {
32        my $url = $vident->url;
33        my ($mixi_id) = $url =~ m|^https?://id.mixi.jp/(\d+)$|;
34        return $app->error( $plugin->translate('mixi reported that you failed to login.  Try again.') )
35            unless $mixi_id;
36
37        $plugin->save_config(
38            { mixi_id => $mixi_id },
39            'blog:' . $blog->id
40        );
41
42        return $app->redirect(
43            $app->uri(
44                mode => 'cfg_plugins',
45                args => { blog_id => $blog->id }
46            )
47        );
48    }
49
50    # login failed
51    return $app->error( $plugin->translate('mixi reported that you failed to login.  Try again.') );
52}
53
541;
55__END__
Note: See TracBrowser for help on using the browser.