| 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 | sub openid_commenter_condition { |
|---|
| 55 | eval "require Digest::SHA1;"; |
|---|
| 56 | return 0 if $@; |
|---|
| 57 | eval "require Crypt::SSLeay;"; |
|---|
| 58 | return 0 if $@; |
|---|
| 59 | return 1; |
|---|
| 60 | } |
|---|
| 61 | |
|---|
| 62 | sub commenter_auth_params { |
|---|
| 63 | my ($key, $blog_id, $entry_id, $static) = @_; |
|---|
| 64 | |
|---|
| 65 | my %param; |
|---|
| 66 | my $plugin = MT->component('mixicomment'); |
|---|
| 67 | $plugin->load_config(\%param, "blog:$blog_id"); |
|---|
| 68 | my $url; |
|---|
| 69 | if ( my $mixi_id = $param{mixi_id} ) { |
|---|
| 70 | $url = "https://id.mixi.jp/$mixi_id/friends"; |
|---|
| 71 | } |
|---|
| 72 | else { |
|---|
| 73 | $url = "http://mixi.jp/"; |
|---|
| 74 | } |
|---|
| 75 | my $params = { |
|---|
| 76 | blog_id => $blog_id, |
|---|
| 77 | static => $static, |
|---|
| 78 | url => $url, |
|---|
| 79 | }; |
|---|
| 80 | $params->{entry_id} = $entry_id if defined $entry_id; |
|---|
| 81 | return $params; |
|---|
| 82 | } |
|---|
| 83 | |
|---|
| 84 | 1; |
|---|
| 85 | __END__ |
|---|