Added User

This commit is contained in:
Frank Schubert
2021-06-22 21:03:24 +02:00
parent 16d7831d23
commit b41a28f1dc
11 changed files with 314 additions and 46 deletions

View File

@@ -8,6 +8,7 @@
class User extends mfBaseModel {
public $permissions;
public $flags;
public $address;
public function init() {
$this->table = "Worker";
@@ -41,6 +42,8 @@ class User extends mfBaseModel {
$wp->loadByUserId($this->id);
$this->permissions = $wp;
$this->loadFlags();
$this->address = new Address($this->address_id);
return true;
}

View File

@@ -29,12 +29,11 @@ class UserController extends mfBaseController {
}
$this->layout()->setTemplate('User/Index');
$users=$this->getUsers();
$users = UserModel::getAll();
$this->layout()->set('users',$users);
$pc = new ProviderController();
$providers = $pc->getProvider();
$this->layout()->set("providers", $providers);
$addresses = AddressModel::getAll();
$this->layout()->set("addresses", $addresses);
}
protected function addAction($request) {
@@ -43,9 +42,8 @@ class UserController extends mfBaseController {
}
$this->layout()->setTemplate('User/Form');
$pc = new ProviderController();
$providers = $pc->getProvider();
$this->layout()->set("providers", $providers);
$addresses = AddressModel::getAll();
$this->layout()->set("addresses", $addresses);
}
protected function editAction($request) {
@@ -62,9 +60,8 @@ class UserController extends mfBaseController {
$user=new User($id);
$this->layout()->set('user',$user);
$pc = new ProviderController();
$providers = $pc->getProvider();
$this->layout()->set("providers", $providers);
$addresses = AddressModel::getAll();
$this->layout()->set("addresses", $addresses);
}
protected function profileAction($request) {
@@ -72,62 +69,61 @@ class UserController extends mfBaseController {
}
protected function saveAction($request) {
//$this->log->debug("UserController::save");
$id = $request['id'];
protected function saveAction() {
$r = $this->request;
$id = $r->id;
if(!$this->isAdmin()) {
$id = $this->me->id;
$request['username'] = $this->me->username;
unset($request['provider_id']);
unset($r->address_id);
}
if(!$id && !$request['username']) {
if(!$id && !$r->username) {
self::redirect('User');
}
$user = new User($id);
if($request['username']) {
$user->username = $request['username'];
if($r->username) {
$user->username = $r->username;
}
if($request['name']) {
$user->name = $request['name'];
if($r->name) {
$user->name = $r->name;
}
if($request['email']) {
$user->email = $request['email'];
if($r->email) {
$user->email = $r->email;
}
if($request['provider_id']) {
if($r->address_id) {
if($this->isAdmin()) {
$user->provider_id = intval($request['provider_id']);
$user->address_id = intval($r->address_id);
//var_dump($user);exit;
$provider = new Provider($user->provider_id);
if(!$provider->id) {
throw new Exception("Unbekannter Provider");
$address = new Address($user->address_id);
if(!$address->id) {
throw new Exception("Unbekannte Firma/Person");
}
}
}
if($request['password']) {
if($request['password'] === $request['password2']) {
$user->password=mfLoginController::generatePasswordHash($request['password']);
if($r->password) {
if($r->password === $r->password2) {
$user->password=mfLoginController::generatePasswordHash($r->password);
} else {
$this->layout()->setFlash("Passwörter stimmen nicht überein!", "error");
}
}
$user->edit_by = $this->me->id;
if(!$id) {
$user->create_by = $this->me->id;
}
$id = $user->save();
if($this->isAdmin()) {
if($request['admin'] == "true" || $user->id == 1) {
if($r->admin == "true" || $user->id == 1) {
$user->permissions->admin = "true";
} else {
$user->permissions->admin = "false";
}
if($request['ticketadmin'] == "true") {
$user->permissions->ticketadmin = "true";
} else {
$user->permissions->ticketadmin = "false";
}
$user->permissions->save();
}

View File

@@ -0,0 +1,99 @@
<?php
class UserModel {
public $address_id = null;
public $username = null;
public $password = null;
public $name = null;
public $email = null;
public $ip = null;
public $sessionid = null;
public $create_by = null;
public $edit_by = null;
public $create = null;
public $edit = null;
public static function find($data) {
}
public static function create(Array $data) {
$model = new User();
foreach($data as $field => $value) {
if(property_exists(get_called_class(), $field)) {
$model->$field = $value;
}
}
return $model;
}
public static function getOne($id) {
if(!is_numeric($id) || !$id) {
throw new Exception("Invalid number", 400);
}
$item = [];
$db = FronkDB::singleton();
$res = $db->select("Worker", "*", "id=$id LIMIT 1");
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
$item = new User($data);
}
return $item;
}
public static function getAll() {
$items = [];
$db = FronkDB::singleton();
$res = $db->select("Worker", "*");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new User($data);
}
}
return $items;
}
public static function search($filter) {
$items = [];
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT Worker.* FROM Worker, WorkerPermission
WHERE WorkerPermission.worker_id= Worker.id
AND $where
GROUP BY WorkerPermission.worker_id
ORDER BY Worker.id";
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
$items[] = new User($data);
}
}
return $items;
}
private function getSqlFilter($filter) {
$where = "1=1 ";
//var_dump($filter);exit;
if(array_key_exists("address_id", $filter)) {
$addressid = $filter['address_id'];
if($addressid === null || $addressid == "null") {
$where .= " AND address_id IS NULL";
} elseif(is_numeric($addressid)) {
$where .= " AND parent_id=$addressid";
}
}
//var_dump($filter, $where);exit;
return $where;
}
}