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

Revision 1480, 2.2 kB (checked in by auno, 9 months ago)

Merged changes from internal. #99460

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
54sub 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
62sub 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
841;
85__END__
Note: See TracBrowser for help on using the browser.