OSDN Git Service

ログインIDの代わりにメールアドレスを使用
authorshizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Wed, 1 Jul 2009 07:10:26 +0000 (07:10 +0000)
committershizuki <shizuki@1ca29b6e-896d-4ea0-84a5-967f57386b96>
Wed, 1 Jul 2009 07:10:26 +0000 (07:10 +0000)
git-svn-id: https://svn.sourceforge.jp/svnroot/nucleus-jp/plugin@1023 1ca29b6e-896d-4ea0-84a5-967f57386b96

NP_MailaddressLogin/trunk/NP_MailaddressLogin.php [new file with mode: 0644]

diff --git a/NP_MailaddressLogin/trunk/NP_MailaddressLogin.php b/NP_MailaddressLogin/trunk/NP_MailaddressLogin.php
new file mode 100644 (file)
index 0000000..77adf6c
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+
+class NP_MailaddressLogin extends NucleusPlugin
+{
+{
+    function getName()
+    {
+        return 'Login by Mailaddress';
+    }
+
+    function getAuthor()
+    {
+        return 'shizuki';
+    }
+
+    function getURL()
+    {
+        return 'http://www.souhoudou.jp/';
+    }
+
+    function getVersion()
+    {
+        return '1.0';
+    }
+
+    function getDescription()
+    {
+        return 'Login to NucleusCMS via mailaddress';
+    }
+
+    function supportsFeature($what)
+    {
+        switch ($what) {
+            case 'SqlTablePrefix':
+                return 1;
+            default:
+                return 0;
+        }
+    }
+
+    function getEventList()
+    {
+        return array(
+            'ValidateForm',
+            'PostRegister',
+            'CustomLogin',
+        );
+    }
+
+    function event_CustomLogin($data)
+    {
+        $query = '
+            SELECT
+                mname as result
+            FROM
+                ' . sql_query('member') . '
+            WHERE
+                memail = ' . sql_real_escape_string($data['login']) ' and
+                mpassword = ' . md5($data['password']);
+        if ($mname = quickQuery($query)) {
+            $data['login']      = $mname;
+            $data['success']    = 1;
+            $data['allowlocal'] = 1;
+        }
+    }
+
+    function event_PostRegister($data)
+    {
+        $member   = $data['member'];
+        $mailAddr = $member->getEmail();
+        if (empty($mailAddr)) {
+            return;
+        }
+        $userMail = quickQuery('
+            SELECT
+                COUNT(*) as result
+            FROM
+                ' . sql_query('member') . '
+            WHERE
+                memail = ' $mailAddr
+        );
+        if ($userMail > 0) {
+            $query = '
+                DELETE
+                FROM
+                    ' . sql_query('member') . '
+                WHERE
+                    mnumber = ' . $this->getID();
+            sql_query($query);
+            $data['member'] = false;
+            return;
+        }
+    }
+
+    function event_ValidateForm($data)
+    {
+        global $CONF;
+        $accountCreate = ($data['type'] == 'membermail' && $data['error'] === 1);
+        if (!$CONF['AllowMemberCreate'] || !$accountCreate) {
+            return;
+        }
+        $mailAddr = postVar('email');
+        if (empty($mailAddr)) {
+            $data['error'] = 'Mail address is empty';
+            return;
+        }
+        $userMail = quickQuery('
+            SELECT
+                COUNT(*) as result
+            FROM
+                ' . sql_query('member') . 
+                '
+            WHERE
+                memail = ' $mailAddr
+            '
+        );
+        if ($userMail > 0) {
+            $data['error'] = 'Mail address is avaiable';
+            return;
+        }
+    }
+
+
+}
+