/**
  * Returns a given user's profile
  * 
  * @param string  $username  Username's profile to return
  * @return array
  */
 public static function getUserProfile($username)
 {
     if (!Member::exists($username)) {
         return null;
     }
     $content = substr(File::get(Config::getConfigPath() . "/users/" . $username . ".yaml"), 3);
     $divide = strpos($content, "\n---");
     $front_matter = trim(substr($content, 0, $divide));
     $content_raw = trim(substr($content, $divide + 4));
     $profile = YAML::parse($front_matter);
     $profile['biography_raw'] = $content_raw;
     $profile['biography'] = Content::transform($content_raw);
     $profile['username'] = $username;
     return $profile;
 }
 public function testEmptyMemberFails()
 {
     $member = new Member();
     $this->assertFalse($member->exists());
     $this->logInWithPermission('ADMIN');
     $this->assertFalse(Permission::checkMember($member, 'ADMIN'));
     $this->assertFalse(Permission::checkMember($member, 'CMS_ACCESS_LeftAndMain'));
 }
 /**
  * Target for the member:register_form form
  * 
  * @return void
  */
 public function member__register()
 {
     $referrer = $_SERVER['HTTP_REFERER'];
     $token = filter_input(INPUT_POST, 'token', FILTER_SANITIZE_STRING);
     $return = filter_input(INPUT_POST, 'return', FILTER_SANITIZE_STRING);
     $auto_login = (bool) filter_input(INPUT_POST, 'auto_login', FILTER_SANITIZE_NUMBER_INT);
     // validate form token
     if (!$this->tokens->validate($token)) {
         $this->flash->set('login_error', 'Invalid token.');
         URL::redirect($referrer);
     }
     // is user logged in?
     if (Auth::isLoggedIn()) {
         URL::redirect($return);
     }
     // get configurations
     $allowed_fields = array_get($this->loadConfigFile('fields'), 'fields', array());
     // get username
     $username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
     // set up iterators and flags
     $submission = array('username' => $username);
     // create member object
     $member = new Member(array());
     // adjust allowed fields to include username and password
     if (!isset($allowed_fields['username'])) {
         $allowed_fields['username'] = array();
     }
     if (!isset($allowed_fields['password'])) {
         $allowed_fields['password'] = array();
     }
     // loop through allowed fields, validating and storing
     foreach ($allowed_fields as $field => $options) {
         if (!isset($_POST[$field])) {
             // field wasn't set, skip it
             continue;
         }
         // set value
         $value = filter_input(INPUT_POST, $field, FILTER_SANITIZE_STRING);
         // don't store this value if `save_value` is set to `false`
         if (array_get($options, 'save_value', true)) {
             $member->set($field, $value);
         }
         // add to submissions, including non-save_value fields because this
         // is the list that will be validated
         $submission[$field] = $value;
     }
     // ensure UID
     $member->ensureUID(false);
     // user-defined validation
     $errors = $this->tasks->validate($submission);
     // built-in validation
     // --------------------------------------------------------------------
     // username
     if (!$username) {
         $errors['username'] = '******';
     } elseif (!Member::isValidUsername($username)) {
         $errors['username'] = '******';
     } elseif (Member::exists($username)) {
         $errors['username'] = '******';
     }
     // password
     $password = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
     $password_confirm = filter_input(INPUT_POST, 'password_confirmation', FILTER_SANITIZE_STRING);
     if (empty($password)) {
         $errors['password'] = '******';
     }
     if (!isset($errors['password']) && !is_null($password_confirm) && $password !== $password_confirm) {
         $errors['password_confirmation'] = 'Passwords did not match.';
     }
     if (count($errors)) {
         // errors were found, set a flash message and redirect
         $this->flash->set('register_error', 'Member not created.');
         $this->flash->set('register_field_errors', $errors);
         // remove password and password_confirm from submission
         if (isset($submission['password'])) {
             unset($submission['password']);
         }
         if (isset($submission['password_confirmation'])) {
             unset($submission['password_confirmation']);
         }
         $this->flash->set('register_old_values', $submission);
         // redirect back to the form
         URL::redirect($referrer);
     } else {
         // set new member roles
         $member->set('roles', Helper::ensureArray($this->fetchConfig('new_member_roles', array(), null, false, false)));
         if ($this->runHook('pre_process', 'replace', true, $member)) {
             // save member
             $member->save();
             // trigger a hook
             $this->runHook('register', 'call', null, $member);
             // user saved
             $this->flash->set('register_success', 'Member created.');
             if ($auto_login) {
                 Auth::login($username, $password);
             }
             // run hook
             $this->runHook('registration_complete', null, null, $member);
             // redirect to member home
             URL::redirect($return);
         } else {
             $this->runHook('registration_failure', null, null, $member);
             $this->flash->set('register_failure', 'Member creation failed.');
         }
     }
 }
 /**
  * @param Member $member
  * @return FieldList
  **/
 public function getFields(Member $member = null)
 {
     $fields = parent::getEcommerceFields();
     $fields->push(new HeaderField('BillingDetails', _t('OrderAddress.BILLINGDETAILS', 'Billing Address'), 3));
     $fields->push(new TextField('Phone', _t('OrderAddress.PHONE', 'Phone')));
     $billingFields = new CompositeField();
     $hasPreviousAddresses = false;
     if ($member) {
         if ($member->exists() && !$member->IsShopAdmin()) {
             $this->FillWithLastAddressFromMember($member, true);
             $addresses = $member->previousOrderAddresses($this->baseClassLinkingToOrder(), $this->ID, $onlyLastRecord = false, $keepDoubles = false);
             //we want MORE than one here not just one.
             if ($addresses->count() > 1) {
                 $fields->push(SelectOrderAddressField::create('SelectBillingAddressField', _t('OrderAddress.SELECTBILLINGADDRESS', 'Select Billing Address'), $addresses));
                 $hasPreviousAddresses = true;
             }
         }
     }
     //$billingFields->push(new TextField('MobilePhone', _t('OrderAddress.MOBILEPHONE','Mobile Phone')));
     $mappingArray = $this->Config()->get("fields_to_google_geocode_conversion");
     if (is_array($mappingArray) && count($mappingArray)) {
         if (!class_exists("GoogleAddressField")) {
             user_error("You must install the Sunny Side Up google_address_field module OR remove entries from: BillingAddress.fields_to_google_geocode_conversion");
         }
         $billingFields->push($billingEcommerceGeocodingField = new GoogleAddressField('BillingEcommerceGeocodingField', _t('OrderAddress.FIND_ADDRESS', 'Find address'), Session::get("BillingEcommerceGeocodingFieldValue")));
         $billingEcommerceGeocodingField->setFieldMap($mappingArray);
         //$billingFields->push(new HiddenField('Address2', "NOT SET", "NOT SET"));
         //$billingFields->push(new HiddenField('City', "NOT SET", "NOT SET"));
     }
     //$billingFields->push(new TextField('Prefix', _t('OrderAddress.PREFIX','Title (e.g. Ms)')));
     $billingFields->push(new TextField('Address', _t('OrderAddress.ADDRESS', 'Address')));
     $billingFields->push(new TextField('Address2', _t('OrderAddress.ADDRESS2', '')));
     $billingFields->push(new TextField('City', _t('OrderAddress.CITY', 'Town')));
     $billingFields->push($this->getPostalCodeField("PostalCode"));
     $billingFields->push($this->getRegionField("RegionID", "RegionCode"));
     $billingFields->push($this->getCountryField("Country"));
     $billingFields->addExtraClass('billingFields');
     $billingFields->addExtraClass("orderAddressHolder");
     $this->makeSelectedFieldsReadOnly($billingFields->FieldList());
     $fields->push($billingFields);
     $this->extend('augmentEcommerceBillingAddressFields', $fields);
     return $fields;
 }
 /**
  * Determine if the given member is an author of this post.
  *
  * @param null|Member $member
  *
  * @return bool
  */
 public function isAuthor($member = null)
 {
     if (!$member || !$member->exists()) {
         return false;
     }
     $list = $this->Authors();
     if ($list instanceof UnsavedRelationList) {
         return in_array($member->ID, $list->getIDList());
     }
     return $list->byID($member->ID) !== null;
 }
Exemple #6
0
 /**
  * Determine if the given member belongs to the given relation.
  *
  * @param Member $member
  * @param DataList $relation
  *
  * @return bool
  */
 protected function isMemberOf($member, $relation)
 {
     if (!$member || !$member->exists()) {
         return false;
     }
     if ($relation instanceof UnsavedRelationList) {
         return in_array($member->ID, $relation->getIDList());
     }
     return $relation->byID($member->ID) !== null;
 }
 /**
  * Deletes existing tokens for this member
  * if logout_across_devices is true, all tokens are deleted, otherwise
  * only the token for the provided device ID will be removed
  */
 public static function clear(Member $member, $alcDevice = null)
 {
     if (!$member->exists()) {
         return;
     }
     $filter = array('MemberID' => $member->ID);
     if (Config::inst()->get('RememberLoginHash', 'logout_across_devices') == false && $alcDevice) {
         $filter['DeviceID'] = $alcDevice;
     }
     RememberLoginHash::get()->filter($filter)->removeAll();
 }
 /**
  * Puts together the fields for the Order Form (and other front-end purposes).
  * @param Member $member
  * @return FieldList
  **/
 public function getFields(Member $member = null)
 {
     $fields = parent::getEcommerceFields();
     $hasPreviousAddresses = false;
     if (EcommerceConfig::get("OrderAddress", "use_separate_shipping_address")) {
         $shippingFieldsHeader = new CompositeField(new HeaderField('SendGoodsToADifferentAddress', _t('OrderAddress.SENDGOODSTODIFFERENTADDRESS', 'Send goods to different address'), 3), new LiteralField('ShippingNote', '<p class="message warning">' . _t('OrderAddress.SHIPPINGNOTE', 'Your goods will be sent to the address below.') . '</p>'));
         if ($member) {
             if ($member->exists() && !$member->IsShopAdmin()) {
                 $this->FillWithLastAddressFromMember($member, true);
                 $addresses = $member->previousOrderAddresses($this->baseClassLinkingToOrder(), $this->ID, $onlyLastRecord = false, $keepDoubles = false);
                 //we want MORE than one here not just one.
                 if ($addresses->count() > 1) {
                     $hasPreviousAddresses = true;
                     $shippingFieldsHeader->push(SelectOrderAddressField::create('SelectShippingAddressField', _t('OrderAddress.SELECTBILLINGADDRESS', 'Select Shipping Address'), $addresses));
                 }
             }
             $shippingFields = new CompositeField(new TextField('ShippingFirstName', _t('OrderAddress.FIRSTNAME', 'First Name')), new TextField('ShippingSurname', _t('OrderAddress.SURNAME', 'Surname')));
         } else {
             $shippingFields = new CompositeField(new TextField('ShippingFirstName', _t('OrderAddress.FIRSTNAME', 'First Name')), new TextField('ShippingSurname', _t('OrderAddress.SURNAME', 'Surname')));
         }
         $shippingFields->push(new TextField('ShippingPhone', _t('OrderAddress.PHONE', 'Phone')));
         //$shippingFields->push(new TextField('ShippingMobilePhone', _t('OrderAddress.MOBILEPHONE','Mobile Phone')));
         $mappingArray = $this->Config()->get("fields_to_google_geocode_conversion");
         if (is_array($mappingArray) && count($mappingArray)) {
             if (!class_exists("GoogleAddressField")) {
                 user_error("You must install the Sunny Side Up google_address_field module OR remove entries from: ShippingAddress.fields_to_google_geocode_conversion");
             }
             $shippingFields->push($shippingEcommerceGeocodingField = new GoogleAddressField('ShippingEcommerceGeocodingField', _t('OrderAddress.Find_Address', 'Find address'), Session::get("ShippingEcommerceGeocodingFieldValue")));
             $shippingEcommerceGeocodingField->setFieldMap($mappingArray);
             //$shippingFields->push(new HiddenField('ShippingAddress2'));
             //$shippingFields->push(new HiddenField('ShippingCity'));
         } else {
         }
         //$shippingFields->push(new TextField('ShippingPrefix', _t('OrderAddress.PREFIX','Title (e.g. Ms)')));
         $shippingFields->push(new TextField('ShippingAddress', _t('OrderAddress.ADDRESS', 'Address')));
         $shippingFields->push(new TextField('ShippingAddress2', _t('OrderAddress.ADDRESS2', '')));
         $shippingFields->push(new TextField('ShippingCity', _t('OrderAddress.CITY', 'Town')));
         $shippingFields->push($this->getRegionField("ShippingRegionID", "ShippingRegionCode"));
         $shippingFields->push($this->getPostalCodeField("ShippingPostalCode"));
         $shippingFields->push($this->getCountryField("ShippingCountry"));
         $this->makeSelectedFieldsReadOnly($shippingFields);
         $shippingFieldsHeader->addExtraClass("shippingFieldsHeader");
         $shippingFields->addExtraClass("orderAddressHolder");
         $fields->push($shippingFieldsHeader);
         $shippingFields->addExtraClass('shippingFields');
         $fields->push($shippingFields);
     }
     $this->extend('augmentEcommerceShippingAddressFields', $fields);
     return $fields;
 }
Exemple #9
0
    }
    $template_list = array("member");
    // check for flash data
    $errors = Session::getFlash('member_errors', array());
    $old_values = Session::getFlash('member_old_values', array());
    // merge
    $data = $old_values + $data + array('_errors' => $errors, 'new' => $new);
    Statamic_View::set_templates(array_reverse($template_list));
    $admin_app->render(null, array('route' => 'members', 'app' => $admin_app) + $data);
})->name('member');
// GET: DELETE MEMBER
$admin_app->get('/deletemember', function () use($admin_app) {
    authenticateForRole('admin');
    doStatamicVersionCheck($admin_app);
    $name = $admin_app->request()->get('name');
    if (Member::exists($name)) {
        $user = Auth::getMember($name);
        $user->delete();
    }
    // Redirect
    $admin_app->flash('info', Localization::fetch('member_deleted'));
    $url = $admin_app->urlFor('members');
    $admin_app->redirect($url);
})->name('deletemember');
// Account
// --------------------------------------------------------
$admin_app->get('/account', function () use($admin_app) {
    authenticateForRole('admin');
    doStatamicVersionCheck($admin_app);
    $user = Auth::getCurrentMember();
    $username = $user->get('username');
Exemple #10
0
 /**
  * Checks if a user exists
  * 
  * @deprecated
  * @param string  $username  Username to check
  * @return boolean
  */
 public static function user_exists($username)
 {
     // deprecation warning
     Log::warn("Use of `user_exists` is deprecated. Use `Member::exists` instead.", "core", "auth");
     // return it
     return Member::exists($username);
 }
 public static function _doAddMember()
 {
     $user = User::find(intval($_SESSION['userid']));
     $member = Member::find(intval($_SESSION['memberid']));
     $division = Division::findById($member->game_id);
     $platoon_id = $user->role >= 3 || User::isDev() ? $_POST['platoon_id'] : $member->platoon_id;
     $squad_id = $user->role >= 2 || User::isDev() ? $_POST['squad_id'] : Squad::mySquadId($member->id) ?: 0;
     $recruiter = $member->member_id;
     $position_id = 6;
     // provide params for brand new members
     $params = array('member_id' => $_POST['member_id'], 'forum_name' => trim($_POST['forum_name']), 'recruiter' => $recruiter, 'game_id' => $_POST['game_id'], 'status_id' => 999, 'join_date' => date("Y-m-d H:i:s"), 'last_forum_login' => date("Y-m-d H:i:s"), 'last_activity' => date("Y-m-d H:i:s"), 'last_forum_post' => date("Y-m-d H:i:s"), 'last_promotion' => date("Y-m-d H:i:s"), 'rank_id' => 1, 'platoon_id' => $platoon_id, 'squad_id' => $squad_id, 'position_id' => $position_id);
     if (Member::exists($_POST['member_id'])) {
         // update existing record
         $existing_member_id = Member::findId($_POST['member_id']);
         $params = array_merge($params, array('id' => $existing_member_id));
         $affected_rows = Member::modify($params);
         if ($affected_rows > 0) {
             UserAction::create(array('type_id' => 10, 'date' => date("Y-m-d H:i:s"), 'user_id' => $member->member_id, 'target_id' => $params['member_id']));
             $data = array('success' => true, 'message' => "Existing member successfully updated!");
         } else {
             $data = array('success' => false, 'message' => "Existing member could not be updated.");
         }
     } else {
         // member doesn't exist
         $insert_id = Member::create($params);
         if ($insert_id != 0) {
             UserAction::create(array('type_id' => 1, 'date' => date("Y-m-d H:i:s"), 'user_id' => $member->member_id, 'target_id' => $params['member_id']));
             $data = array('success' => true, 'message' => "Member successfully added!");
         } else {
             $data = array('success' => false, 'message' => "Member could not be added.");
         }
     }
     if ($insert_id != 0) {
         if (isset($_POST['played_games'])) {
             $games = $_POST['played_games'];
             foreach ($games as $game) {
                 $memberGame = new stdClass();
                 $memberGame->member_id = $insert_id;
                 $memberGame->game_id = $game;
                 MemberGame::add($memberGame);
             }
         }
         if (isset($_POST['ingame_name'])) {
             $ingame_name = trim($_POST['ingame_name']);
             $handle = new stdClass();
             $handle->member_id = $insert_id;
             $handle->handle_type = $division->primary_handle;
             $handle->handle_value = $ingame_name;
             $handle->handle_account_id = '0';
             $handle->invalid = '0';
             $handle->invalid_date = '0000-00-00';
             MemberHandle::add($handle);
         }
     }
     echo json_encode($data);
 }
 /**
  *@todo: are there times when the Shipping rather than the Billing address should be linked?
  * Copies the last address used by the member.
  *
  * @param Object (Member) $member
  * @param Boolean $write - should the address be written
  * @return DataObject (OrderAddress / ShippingAddress / BillingAddress)
  **/
 public function FillWithLastAddressFromMember(Member $member, $write = false)
 {
     $excludedFields = array("ID", "OrderID");
     $fieldPrefix = $this->fieldPrefix();
     if ($member && $member->exists()) {
         $oldAddress = $member->previousOrderAddress($this->baseClassLinkingToOrder(), $this->ID);
         if ($oldAddress) {
             $fieldNameArray = $this->getFieldNameArray($fieldPrefix);
             foreach ($fieldNameArray as $field) {
                 if (in_array($field, $excludedFields)) {
                     //do nothing
                 } elseif ($this->{$field}) {
                     //do nothing
                 } elseif (isset($oldAddress->{$field})) {
                     $this->{$field} = $oldAddress->{$field};
                 }
             }
         }
         //copy data from  member
         if (is_a($this, Object::getCustomClass("BillingAddress"))) {
             $this->Email = $member->Email;
         }
         $fieldNameArray = array("FirstName" => $fieldPrefix . "FirstName", "Surname" => $fieldPrefix . "Surname");
         foreach ($fieldNameArray as $memberField => $fieldName) {
             //NOTE, we always override the Billing Address (which does not have a fieldPrefix)
             if (!$this->{$fieldName} || is_a($this, Object::getCustomClass("BillingAddress"))) {
                 $this->{$fieldName} = $member->{$memberField};
             }
         }
     }
     if ($write) {
         $this->write();
     }
     return $this;
 }
Exemple #13
0
    } else {
        $err = "Email ou mot de passe incorrect.";
        $app->render('login.php', array('err' => $err));
    }
})->name('login');
$app->get('/signin', function () use($app) {
    $app->render('signin.php');
})->name('signin');
$app->post('/signin', function () use($app) {
    $post = $app->request->post();
    $err = array();
    $member = new Member();
    $user = new User($app->request->post());
    $user->id_type = 1;
    // Vérifie le numéro de licence
    if ($member->exists($post['licence_num']) != false) {
        $err[] = "Votre numéro de licence est incorrect.";
    } else {
        // Vérifie de l'email
        if ($user->exists($post['mail']) != false) {
            $err[] = "Cette adresse email est ddéjà prise.";
        }
    }
    // Vérifie si les mdp sont identiques
    if ($post['password'] != $post['password_confirm']) {
        $err[] = "Vos mots de passe ne sont pas identiques.";
    }
    // Vérifie si y'a des erreurs
    if (empty($err)) {
        $user = $user->save();
        $note = new Note();