/** Login selected user * @param \System\Http\Request $request Request to write login inside * @param string $password Password to use in login * @return bool */ public function login(\System\Http\Request $request, $password) { return $this->password == hash_passwd($password) ? $this->create_session($request) : false; }
public function run() { $id = $this->id; $new = $this->new; def($id); def($new, false); $model = $this->req('model'); $rq = $this->request; $cname = \System\Loader::get_class_from_model($model); $response = array('message' => 'not-found', 'status' => 404); if (class_exists($cname) && is_subclass_of($cname, '\\System\\Model\\Perm')) { if ($item = $new ? new $cname() : $cname::find($id)) { $data = $rq->post(); foreach ($data as $attr_name => $val) { if ($item::has_attr($attr_name)) { $def = $cname::get_attr($attr_name); if (is_string($val)) { if (preg_match('/^[\\{\\[].*[\\}\\]]$/', $val)) { $val = \System\Json::decode(html_entity_decode($val)); } } if (in_array($def['type'], array('file', 'image'))) { $helper_cname = '\\System\\File'; if ($def['type'] == 'image') { $helper_cname = '\\System\\Image'; } if (is_array($val)) { if (any($val['method']) && any($val[$val['method']])) { $data = $rq->post($val[$val['method']]); if ($data) { $item->{$attr_name} = $helper_cname::from_tmp($data['tmp_name'], $data['name']); } } } } else { if ($def['type'] == 'password') { $item->{$attr_name} = hash_passwd($val); } else { if ($def['type'] == 'bool') { if ($val == 'false') { $val = false; } $item->{$attr_name} = $val; } else { if ($def['type'] == 'date') { $date = \DateTime::createFromFormat('Y-m-d', $val); if ($date) { $tz = new \DateTimeZone(\System\Settings::get('locales', 'timezone')); $date->setTimeZone($tz); } else { $date = null; } $item->{$attr_name} = $date; } else { if ($def['type'] == 'datetime') { $date = \DateTime::createFromFormat('Y-m-d\\TH:i:sO', $val); if ($date) { $tz = new \DateTimeZone(\System\Settings::get('locales', 'timezone')); $date->setTimeZone($tz); } else { $date = null; } $item->{$attr_name} = $date; } else { $item->{$attr_name} = $val; } } } } } } } $item->request = $rq; if ($item::has_attr('author') && $rq->user) { $item->author = $rq->user; } try { $item->save(); } catch (\System\Error $e) { $response['status'] = 500; $response['message'] = $e->get_explanation(); } if ($response['status'] != 500) { $response['message'] = $new ? 'created' : 'saved'; $response['status'] = 200; } $response['data'] = $item->to_object(); } } $this->partial(null, $response); }
public static function seed_initial_data() { if (static::has_been_seeded()) { return; } foreach (self::$initial_data as $model => $objects) { foreach ($objects as $data_set) { if (isset($data_set['password'])) { $data_set['password'] = hash_passwd($data_set['password']); } $obj = null; if (isset($data_set['id'])) { $obj = $model::find($data_set['id']); } if ($obj) { $obj->update_attrs($data_set); } else { $obj = new $model($data_set); $obj->is_new_object = true; } $obj->save(); foreach ($data_set as $attr => $val) { if (is_array($val) && $model::has_attr($attr) && $model::is_rel($attr)) { if ($model::get_attr_type($attr) == 'has-many') { $def = $model::get_attr($attr); if (any($def['is_bilinear']) && any($def['is_master'])) { unset($obj->{$attr}); $obj->assign_rel($attr, $val); } } } } } } \System\Database\Migration::create(array('seoname' => 'initial-seed', 'name' => 'Initial data seed', 'desc' => 'Initial data seed', 'status' => 'ok', 'date' => new \DateTime())); }
/** * Create or update object in database * * @return System\Model\Database */ public function save() { $this->run_tasks(\System\Model\Callback::BEFORE_SAVE); $model = get_model($this); if ($this->update_check()) { if (isset($model::$attrs['pass'])) { foreach ($model::$attrs['pass'] as $attr) { $old_attr = $attr . '_old'; if (any($this->__get($old_attr)) && $this->{$attr} != $this->{$old_attr}) { $this->{$attr} = hash_passwd($this->{$attr}); } } } $data = $this->get_data_raw(); if (!$this->is_new() && !$this->is_new_object) { \System\Database::simple_update($model::get_table(), $model::get_id_col(), $this->id, $data); } else { $id = \System\Database::simple_insert($model::get_table(), $data); if ($id) { $this->id = $id; } else { throw new \System\Error\Database(sprintf('Could not save model "%s".', $model)); } } } $this->save_relations(); $this->run_tasks(\System\Model\Callback::AFTER_SAVE); return $this; }
public function run() { $this->req('id'); $this->req('link_god'); if ($id && ($user = find("\\System\\User", $id))) { $heading = $locales->trans('godmode_user_edit_passwd'); $f = $ren->form(array("id" => 'edit_user_groups', "heading" => $heading)); $f->input_password('password', $locales->trans('godmode_user_password'), true); $f->input_password('password_check', $locales->trans('godmode_user_password_check'), true); $f->submit($locales->trans('godmode_save')); if ($f->passed()) { $p = $f->get_data(); if ($p['password'] === $p['password_check']) { $p['password'] = hash_passwd($p['password']); $user->update_attrs($p)->save(); $flow->redirect(\Godmode\Router::url($request, $link_god, 'detail', array($user->id))); } else { $f->out($this); } } else { $f->out($this); } } else { throw new System\Error\NotFound(); } }