|
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 | |
|---|
| 1 | package mixiComment::App; |
|---|
| 2 | |
|---|
| 3 | use strict; |
|---|
| 4 | use mixiComment::Auth::mixi; |
|---|
| 5 | |
|---|
| 6 | sub login_blog_owner { |
|---|
| 7 | my $app = shift; |
|---|
| 8 | |
|---|
| 9 | $app->param('verify_blog_owner', 1); |
|---|
| 10 | mixiComment::Auth::mixi->login($app); |
|---|
| 11 | } |
|---|
| 12 | |
|---|
| 13 | sub 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 | |
|---|
| 54 | 1; |
|---|
| 55 | __END__ |
|---|