コード例 #1
0
ファイル: user.php プロジェクト: just-paja/fudjan
 /** 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;
 }
コード例 #2
0
ファイル: edit.php プロジェクト: just-paja/fudjan-api
 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);
 }
コード例 #3
0
ファイル: database.php プロジェクト: just-paja/fudjan
 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()));
 }
コード例 #4
0
ファイル: database.php プロジェクト: just-paja/fudjan
 /**
  * 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;
 }
コード例 #5
-1
 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();
     }
 }