OSDN Git Service

管理画面からの新規登録とログインは確認済み
[nucleus-jp/nucleus-plugins.git] / NP_MailaddressLogin / trunk / NP_MailaddressLogin.php
1 <?php
2
3 class NP_MailaddressLogin extends NucleusPlugin
4 {
5     function getName()
6     {
7         return 'Login by Mailaddress';
8     }
9
10     function getAuthor()
11     {
12         return 'shizuki';
13     }
14
15     function getURL()
16     {
17         return 'http://www.souhoudou.jp/';
18     }
19
20     function getVersion()
21     {
22         return '1.0';
23     }
24
25     function getDescription()
26     {
27         return 'Login to NucleusCMS via mailaddress';
28     }
29
30     function supportsFeature($what)
31     {
32         switch ($what) {
33             case 'SqlTablePrefix':
34                 return 1;
35             default:
36                 return 0;
37         }
38     }
39
40     function getEventList()
41     {
42         return array(
43             'ValidateForm',
44             'PostRegister',
45             'CustomLogin',
46         );
47     }
48
49     function event_CustomLogin($data)
50     {
51         $query = '
52             SELECT
53                 mname as result
54             FROM
55                 ' . sql_table('member') . '
56             WHERE
57                 memail = "' . sql_real_escape_string($data['login']) .    '" and
58                 mpassword = "' . md5($data['password']) . '"';
59         if ($mname = quickQuery($query)) {
60             $data['login']      = $mname;
61             $data['success']    = 1;
62             $data['allowlocal'] = 1;
63         }
64     }
65
66     function event_PostRegister($data)
67     {
68         $member   = $data['member'];
69         $mailAddr = $member->getEmail();
70         if (empty($mailAddr)) {
71             return;
72         }
73         $userMail = quickQuery('
74             SELECT
75                 COUNT(*) as result
76             FROM
77                 ' . sql_table('member') . '
78             WHERE
79                 memail = "' . sql_real_escape_string($mailAddr) . '"'
80         );
81         if ($userMail > 1) {
82             $adm = new ADMIN;
83             $adm->deleteOneMember($member->getID());
84             return;
85         }
86     }
87
88     function event_ValidateForm($data)
89     {
90         global $CONF;
91         $accountCreate = ($data['type'] == 'membermail' && $data['error'] === 1);
92         if (!$CONF['AllowMemberCreate'] || !$accountCreate) {
93             return;
94         }
95         $mailAddr = postVar('email');
96         if (empty($mailAddr)) {
97             $data['error'] = 'Mail address is empty';
98             return;
99         }
100         $userMail = quickQuery('
101             SELECT
102                 COUNT(*) as result
103             FROM
104                 ' . sql_table('member') . 
105                 '
106             WHERE
107                 memail = "' . sql_real_escape_string($mailAddr) . '"'
108         );
109         if ($userMail > 0) {
110             $data['error'] = 'Mail address is avaiable';
111             return;
112         }
113     }
114
115
116 }
117