public static function _init() { static::$_properties['member_id'] = Util_Orm::get_relational_numeric_key_prop(); static::$_properties['email'] = Model_MemberAuth::property('email'); static::$_properties['token'] = Model_MemberPre::property('token'); static::$_properties['token']['form']['type'] = false; }
public static function _init() { static::$_properties['member_id'] = Util_Orm::get_relational_numeric_key_prop(); static::$_properties['email'] = Model_MemberAuth::property('email'); static::$_properties['token'] = Model_MemberPre::property('token'); static::$_properties['token']['form']['type'] = false; static::$_properties['code']['label'] = term('form.confirm', 'site.code'); static::$_properties['code']['form']['validation']['exact_length'] = array(conf('member.setting.email.codeLength')); }
/** * Mmeber leave * * @access public * @return Response */ public function action_index() { $val = self::get_validation_object(); if (\Input::method() == 'POST') { \Util_security::check_csrf(); $success_message = sprintf('%sを%sしました。', term('form.invite', 'site.mail'), term('form.post')); $error_message = ''; $is_transaction_rollback = false; try { if (!$val->run()) { throw new ValidationFailedException($val->show_errors()); } $post = $val->validated(); if (Model_MemberPre::get_one4invite_member_id_and_email($this->u->id, $post['email'])) { throw new ValidationFailedException(sprintf('その%sは既に%sです。', term('site.email'), term('form.invited'))); } DB::start_transaction(); $token = Model_MemberPre::save_with_token($post['email'], null, $this->u->id); DB::commit_transaction(); $mail = new Site_Mail('memberInvite'); $mail->send($post['email'], array('register_url' => sprintf('%s?token=%s', Uri::create('member/register'), $token), 'invite_member_name' => $this->u->name, 'invite_message' => $post['message'])); Session::set_flash('message', $success_message); Response::redirect('member/invite'); } catch (ValidationFailedException $e) { $error_message = Site_Controller::get_error_message($e); } catch (EmailValidationFailedException $e) { Util_Toolkit::log_error('send mail error: ' . __METHOD__ . ' validation error'); $error_message = 'メール送信エラー'; } catch (EmailSendingFailedException $e) { Util_Toolkit::log_error('send mail error: ' . __METHOD__ . ' sending error'); $error_message = 'メール送信エラー'; } catch (\Database_Exception $e) { $is_transaction_rollback = true; $error_message = Site_Controller::get_error_message($e, true); } catch (FuelException $e) { $is_transaction_rollback = true; $error_message = Site_Controller::get_error_message($e); } if ($is_transaction_rollback && DB::in_transaction()) { DB::rollback_transaction(); } if ($error_message) { Session::set_flash('error', $error_message); } } $this->set_title_and_breadcrumbs(term('form.invite_friend'), null, $this->u); $this->template->content = \View::forge('member/invite', array('val' => $val, 'member_pres' => Model_MemberPre::get4invite_member_id($this->u->id))); }
private function check_token() { if (!($member_pre = Model_MemberPre::get4token(Input::param('token')))) { return false; } if (!Site_Util::check_token_lifetime($member_pre->updated_at, conf('member.register.token_lifetime'))) { return false; } return $member_pre; }