ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 7836


Ignore:
Timestamp:
Jul 25, 2008, 6:06:11 AM (14 years ago)
Author:
ebihara
Message:

#2857:簡易的な登録処理をおこなうことができるような機構を追加

Location:
OpenPNE3/trunk
Files:
10 added
14 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE3/trunk/apps/pc_frontend/config/settings.yml

    r7823 r7836  
    8080#
    8181#    # Activated modules from plugins or from the symfony core
    82 #    enabled_modules:        [default]
     82    enabled_modules:        [default, loginId]
    8383#
    8484#    # Charset used for the response
  • OpenPNE3/trunk/apps/pc_frontend/modules/member/actions/actions.class.php

    r7823 r7836  
    4545
    4646 /**
     47  * Executes register action
     48  *
     49  * @param sfRequest $request A request object
     50  */
     51  public function executeRegisterInput($request)
     52  {
     53    $this->form = $this->getUser()->getAuthForm();
     54    $this->form->setForRegisterWidgets();
     55
     56    $auth = $request->getParameter('auth');
     57
     58    if ($auth) {
     59      $this->form->bind($auth);
     60
     61      if ($this->form->isValid()) {
     62        $member = new Member();
     63        $member->setIsActive(false);
     64        $member->save();
     65
     66        $this->redirectIf(
     67          $this->getUser()->register($member->getId(), $this->form),
     68          $this->getUser()->getRegisterEndAction()
     69        );
     70      }
     71    }
     72
     73    return sfView::SUCCESS;
     74  }
     75
     76 /**
    4777  * Executes home action
    4878  *
  • OpenPNE3/trunk/apps/pc_frontend/modules/member/config/security.yml

    r7835 r7836  
    22  is_secure: on
    33  credentials: SNSMember
     4
     5registerInput:
     6  credentials: SNSRegisterBegin
  • OpenPNE3/trunk/apps/pc_frontend/modules/member/templates/loginSuccess.php

    r7822 r7836  
    77</table>
    88</form>
     9
     10<?php echo link_to('新規登録', 'member/registerInput') ?>
  • OpenPNE3/trunk/config/schema.yml

    r7825 r7836  
    22  member:
    33    id: ~
     4    is_active: { type: boolean }
    45    created_at: ~
    56    updated_at: ~
  • OpenPNE3/trunk/data/fixtures/001_import_first_member.yml

    r7828 r7836  
    22  first_member:
    33    id: ~
     4    is_active: 1
    45
    56AuthenticationLoginId:
  • OpenPNE3/trunk/data/sql/lib.model.schema.sql

    r7825 r7836  
    1414(
    1515        `id` INTEGER  NOT NULL AUTO_INCREMENT,
     16        `is_active` INTEGER,
    1617        `created_at` DATETIME,
    1718        `updated_at` DATETIME,
  • OpenPNE3/trunk/lib/model/map/MemberMapBuilder.php

    r7811 r7836  
    3535                $tMap->addPrimaryKey('ID', 'Id', 'int', CreoleTypes::INTEGER, true, null);
    3636
     37                $tMap->addColumn('IS_ACTIVE', 'IsActive', 'boolean', CreoleTypes::BOOLEAN, false, null);
     38
    3739                $tMap->addColumn('CREATED_AT', 'CreatedAt', 'int', CreoleTypes::TIMESTAMP, false, null);
    3840
  • OpenPNE3/trunk/lib/model/om/BaseMember.php

    r7828 r7836  
    1414
    1515       
     16        protected $is_active;
     17
     18
     19       
    1620        protected $created_at;
    1721
     
    3741
    3842                return $this->id;
     43        }
     44
     45       
     46        public function getIsActive()
     47        {
     48
     49                return $this->is_active;
    3950        }
    4051
     
    98109        }
    99110       
     111        public function setIsActive($v)
     112        {
     113
     114                if ($this->is_active !== $v) {
     115                        $this->is_active = $v;
     116                        $this->modifiedColumns[] = MemberPeer::IS_ACTIVE;
     117                }
     118
     119        }
     120       
    100121        public function setCreatedAt($v)
    101122        {
     
    138159                        $this->id = $rs->getInt($startcol + 0);
    139160
    140                         $this->created_at = $rs->getTimestamp($startcol + 1, null);
    141 
    142                         $this->updated_at = $rs->getTimestamp($startcol + 2, null);
     161                        $this->is_active = $rs->getBoolean($startcol + 1);
     162
     163                        $this->created_at = $rs->getTimestamp($startcol + 2, null);
     164
     165                        $this->updated_at = $rs->getTimestamp($startcol + 3, null);
    143166
    144167                        $this->resetModified();
     
    146169                        $this->setNew(false);
    147170
    148                                                 return $startcol + 3;
     171                                                return $startcol + 4;
    149172                } catch (Exception $e) {
    150173                        throw new PropelException("Error populating Member object", $e);
     
    303326                                break;
    304327                        case 1:
     328                                return $this->getIsActive();
     329                                break;
     330                        case 2:
    305331                                return $this->getCreatedAt();
    306332                                break;
    307                         case 2:
     333                        case 3:
    308334                                return $this->getUpdatedAt();
    309335                                break;
     
    319345                $result = array(
    320346                        $keys[0] => $this->getId(),
    321                         $keys[1] => $this->getCreatedAt(),
    322                         $keys[2] => $this->getUpdatedAt(),
     347                        $keys[1] => $this->getIsActive(),
     348                        $keys[2] => $this->getCreatedAt(),
     349                        $keys[3] => $this->getUpdatedAt(),
    323350                );
    324351                return $result;
     
    340367                                break;
    341368                        case 1:
     369                                $this->setIsActive($value);
     370                                break;
     371                        case 2:
    342372                                $this->setCreatedAt($value);
    343373                                break;
    344                         case 2:
     374                        case 3:
    345375                                $this->setUpdatedAt($value);
    346376                                break;
     
    353383
    354384                if (array_key_exists($keys[0], $arr)) $this->setId($arr[$keys[0]]);
    355                 if (array_key_exists($keys[1], $arr)) $this->setCreatedAt($arr[$keys[1]]);
    356                 if (array_key_exists($keys[2], $arr)) $this->setUpdatedAt($arr[$keys[2]]);
     385                if (array_key_exists($keys[1], $arr)) $this->setIsActive($arr[$keys[1]]);
     386                if (array_key_exists($keys[2], $arr)) $this->setCreatedAt($arr[$keys[2]]);
     387                if (array_key_exists($keys[3], $arr)) $this->setUpdatedAt($arr[$keys[3]]);
    357388        }
    358389
     
    363394
    364395                if ($this->isColumnModified(MemberPeer::ID)) $criteria->add(MemberPeer::ID, $this->id);
     396                if ($this->isColumnModified(MemberPeer::IS_ACTIVE)) $criteria->add(MemberPeer::IS_ACTIVE, $this->is_active);
    365397                if ($this->isColumnModified(MemberPeer::CREATED_AT)) $criteria->add(MemberPeer::CREATED_AT, $this->created_at);
    366398                if ($this->isColumnModified(MemberPeer::UPDATED_AT)) $criteria->add(MemberPeer::UPDATED_AT, $this->updated_at);
     
    394426        public function copyInto($copyObj, $deepCopy = false)
    395427        {
     428
     429                $copyObj->setIsActive($this->is_active);
    396430
    397431                $copyObj->setCreatedAt($this->created_at);
  • OpenPNE3/trunk/lib/model/om/BaseMemberPeer.php

    r7811 r7836  
    1414
    1515       
    16         const NUM_COLUMNS = 3;
     16        const NUM_COLUMNS = 4;
    1717
    1818       
     
    2424
    2525       
     26        const IS_ACTIVE = 'member.IS_ACTIVE';
     27
     28       
    2629        const CREATED_AT = 'member.CREATED_AT';
    2730
     
    3538       
    3639        private static $fieldNames = array (
    37                 BasePeer::TYPE_PHPNAME => array ('Id', 'CreatedAt', 'UpdatedAt', ),
    38                 BasePeer::TYPE_COLNAME => array (MemberPeer::ID, MemberPeer::CREATED_AT, MemberPeer::UPDATED_AT, ),
    39                 BasePeer::TYPE_FIELDNAME => array ('id', 'created_at', 'updated_at', ),
    40                 BasePeer::TYPE_NUM => array (0, 1, 2, )
     40                BasePeer::TYPE_PHPNAME => array ('Id', 'IsActive', 'CreatedAt', 'UpdatedAt', ),
     41                BasePeer::TYPE_COLNAME => array (MemberPeer::ID, MemberPeer::IS_ACTIVE, MemberPeer::CREATED_AT, MemberPeer::UPDATED_AT, ),
     42                BasePeer::TYPE_FIELDNAME => array ('id', 'is_active', 'created_at', 'updated_at', ),
     43                BasePeer::TYPE_NUM => array (0, 1, 2, 3, )
    4144        );
    4245
    4346       
    4447        private static $fieldKeys = array (
    45                 BasePeer::TYPE_PHPNAME => array ('Id' => 0, 'CreatedAt' => 1, 'UpdatedAt' => 2, ),
    46                 BasePeer::TYPE_COLNAME => array (MemberPeer::ID => 0, MemberPeer::CREATED_AT => 1, MemberPeer::UPDATED_AT => 2, ),
    47                 BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'created_at' => 1, 'updated_at' => 2, ),
    48                 BasePeer::TYPE_NUM => array (0, 1, 2, )
     48                BasePeer::TYPE_PHPNAME => array ('Id' => 0, 'IsActive' => 1, 'CreatedAt' => 2, 'UpdatedAt' => 3, ),
     49                BasePeer::TYPE_COLNAME => array (MemberPeer::ID => 0, MemberPeer::IS_ACTIVE => 1, MemberPeer::CREATED_AT => 2, MemberPeer::UPDATED_AT => 3, ),
     50                BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'is_active' => 1, 'created_at' => 2, 'updated_at' => 3, ),
     51                BasePeer::TYPE_NUM => array (0, 1, 2, 3, )
    4952        );
    5053
     
    100103
    101104                $criteria->addSelectColumn(MemberPeer::ID);
     105
     106                $criteria->addSelectColumn(MemberPeer::IS_ACTIVE);
    102107
    103108                $criteria->addSelectColumn(MemberPeer::CREATED_AT);
  • OpenPNE3/trunk/plugins/sfOpenPNEAuthLoginIDPlugin/lib/form/sfOpenPNEAuthForm_LoginID.class.php

    r7828 r7836  
    88 * @author     Kousuke Ebihara <ebihara@tejimaya.net>
    99 */
    10 class sfOpenPNEAuthForm_LoginID extends sfForm
     10class sfOpenPNEAuthForm_LoginID extends sfOpenPNEAuthForm
    1111{
    1212  public function configure()
     
    2424    $this->widgetSchema->setNameFormat('auth[%s]');
    2525  }
     26
     27  public function setForRegisterWidgets()
     28  {
     29    $this->validatorSchema['password_confirm'] = new sfValidatorString();
     30    $this->widgetSchema['password_confirm'] = new sfWidgetFormInputPassword();
     31
     32    $this->mergePostValidator(new sfValidatorSchemaCompare('password', '==', 'password_confirm'));
     33    $this->mergePostValidator(new sfValidatorPropelUnique(array('model' => 'AuthenticationLoginId', 'column' => 'login_id')));
     34  }
    2635}
  • OpenPNE3/trunk/plugins/sfOpenPNEAuthLoginIDPlugin/lib/user/sfOpenPNEAuthContainer_LoginID.class.php

    r7828 r7836  
    1818
    1919    if (!$data) {
    20         return false;
     20      return false;
    2121    }
    2222
     
    2727    return false;
    2828  }
     29
     30  public function isRegisterBegin($member_id = null)
     31  {
     32    return true;
     33  }
     34
     35  public function isRegisterFinish($member_id = null)
     36  {
     37    $data = MemberPeer::retrieveByPk((int)$member_id);
     38
     39    if (!$data) {
     40      return false;
     41    }
     42
     43    if ($data->getIsActive()) {
     44      return false;
     45    } else {
     46      return true;
     47    }
     48  }
     49
     50  public function registerData($memberId, $form)
     51  {
     52    if (!$memberId) {
     53      return false;
     54    }
     55
     56    $login_id = $form->getValue('login_id');
     57    $password = md5($form->getValue('password'));
     58
     59    $auth = new AuthenticationLoginId();
     60    $auth->setMemberId($memberId);
     61    $auth->setLoginId($login_id);
     62    $auth->setPassword($password);
     63
     64    return $auth->save();
     65  }
    2966}
  • OpenPNE3/trunk/plugins/sfOpenPNESecurityUserPlugin/lib/user/sfOpenPNEAuthContainer.class.php

    r7832 r7836  
    1111{
    1212  /**
    13    * Fetch data from storage container
     13   * Fetches data from storage container.
    1414   *
    1515   * @param  sfForm $form
     
    1717   */
    1818  abstract public function fetchData($form);
     19
     20  /**
     21   * Registers data to storage container.
     22   *
     23   * @param  int    $memberId
     24   * @param  sfForm $form
     25   * @return bool
     26   */
     27  abstract public function registerData($memberId, $form);
     28
     29  /**
     30   * Is beginning to register of SNS.
     31   *
     32   * @return bool
     33   */
     34  abstract public function isRegisterBegin($member_id = null);
     35
     36  /**
     37   * Is finished registering of SNS.
     38   *
     39   * @return bool
     40   */
     41  abstract public function isRegisterFinish($member_id = null);
     42
     43  /**
     44   * Gets an action path to register
     45   *
     46   * @return string
     47   */
     48  public function getRegisterEndAction()
     49  {
     50    return sfConfig::get('sf_openpne_register_end_action');
     51  }
    1952}
  • OpenPNE3/trunk/plugins/sfOpenPNESecurityUserPlugin/lib/user/sfOpenPNESecurityUser.class.php

    r7835 r7836  
    3232    $formClass = 'sfOpenPNEAuthForm_' . $authMode;
    3333    $this->authForm = new $formClass();
     34
     35    $this->initializeCredential();
    3436  }
    3537
     
    4749  {
    4850    return $this->getAttribute('member_id', null, 'sfOpenPNESecurityUser');
     51  }
     52
     53  public function getRegisterEndAction()
     54  {
     55    return $this->getAuthContainer()->getRegisterEndAction();
    4956  }
    5057
     
    6875    $this->setAuthenticated(false);
    6976    $this->getAttributeHolder()->removeNamespace('sfOpenPNESecurityUser');
    70     $this->clearCredential();
     77    $this->clearCredentials();
     78  }
     79
     80  public function register($memberId = null, $form = null)
     81  {
     82    $isRegisterData = $this->getAuthContainer()->registerData($memberId, $form);
     83    if ($isRegisterData) {
     84      $this->setAuthenticated(true);
     85      $this->setAttribute('member_id', $memberId, 'sfOpenPNESecurityUser');
     86      return true;
     87    }
     88
     89    return false;
     90  }
     91
     92  public function initializeCredential()
     93  {
     94    $memberId = $this->getMemberId();
     95    $isRegisterFinish = $this->getAuthContainer()->isRegisterFinish($memberId);
     96
     97    $this->setIsSNSMember(false);
     98    $this->setIsSNSRegisterFinish(false);
     99
     100    if ($memberId && $isRegisterFinish) {
     101      $this->setIsSNSRegisterFinish(true);
     102    } elseif ($memberId) {
     103      $this->setIsSNSMember(true);
     104    }
     105
     106    $this->setIsSNSRegisterBegin($this->getAuthContainer()->isRegisterBegin());
    71107  }
    72108
     
    80116    }
    81117  }
     118
     119  public function setIsSNSRegisterBegin($isSNSRegisterBegin)
     120  {
     121    if ($this->hasCredential('SNSMember')) {
     122      $this->removeCredential('SNSRegisterBegin');
     123      return false;
     124    }
     125
     126    if ($isSNSRegisterBegin) {
     127      $this->setAuthenticated(true);
     128      $this->addCredential('SNSRegisterBegin');
     129    } else {
     130      $this->removeCredential('SNSRegisterBegin');
     131    }
     132  }
     133
     134  public function setIsSNSRegisterFinish($isSNSRegisterFinish)
     135  {
     136    if ($this->hasCredential('SNSMember')) {
     137      $this->removeCredential('SNSRegisterFinish');
     138      return false;
     139    }
     140
     141    if ($isSNSRegisterFinish) {
     142      $this->setAuthenticated(true);
     143      $this->addCredential('SNSRegisterFinish');
     144    } else {
     145      $this->removeCredential('SNSRegisterFinish');
     146    }
     147  }
    82148}
Note: See TracChangeset for help on using the changeset viewer.