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

@@ -52,7 +52,7 @@
<a class="btn btn-primary" href="<?=self::getUrl("Address", "add")?>"><i class="fas fa-plus"></i> Neue Person/Firma anlegen</a>
</div>
<table class="table table-striped">
<table class="table table-striped table-hover">
<tr>
<th>Typ</th>
<th>Firma</th>

View File

@@ -0,0 +1,94 @@
<?php
$siteTitle = "Benutzer";
?>
<?php include(realpath(dirname(__FILE__)."/../")."/header.php"); ?>
<div class="wrapper">
<div class="container-fluid">
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>">the-tool</a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("User")?>">Benutzer</a></li>
<li class="breadcrumb-item"><?=($action == "edit") ? "bearbeiten" : "neu"?></li>
</ol>
</div>
<h4 class="page-title">Benutzer</h4>
</div>
</div>
</div>
<!-- end page title -->
<!-- Main content -->
<div class="row">
<div class="col-lg">
<div class="card">
<div class="card-body">
<h4 class="header-title mb-3">Benutzer bearbeiten</h4>
<form method="post" action="<?=$this->getUrl("User","save")?>">
<input type="hidden" name="id" value="<?=$user->id?>" />
<div class="form-group">
<label for="username">Username:</label>
<input type="text" id="username" name="username" class="form-control" value="<?=$user->username?>" />
</div>
<div class="form-group">
<label for="name">Name:</label>
<input type="text" id="name" name="name" class="form-control" value="<?=$user->name?>" />
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text" id="email" name="email" class="form-control" value="<?=$user->email?>" />
</div>
<div class="form-group">
<label for="address_id">Firma/Person:</label>
<select name="address_id" id="address_id" class="form-control">
<option value=""></option>
<?php foreach($addresses as $address): ?>
<option value="<?=$address->id?>" <?=($address->id == $user->address_id) ? "selected='selected'" : ""?>><?=($address->company) ? $address->company : $address->getFullName()?></option>
<?php endforeach; ?>
</select>
</div>
<div class="form-group">
<label for="admin">Admin:</label>
<select name="admin" class="form-control" <?=($user->id == 1) ? "disabled='disabled'" : ""?>>
<option value="false" <?=(isset($user) && !$user->isAdmin()) ? "selected='selected'" : ""?>>No</option>
<option value="true" <?=(isset($user) && $user->isAdmin() || $user->id == 1) ? "selected='selected'" : ""?>>Yes</option>
</select>
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password" name="password" class="form-control" value="" />
</div>
<div class="form-group">
<label for="password2">Repeat Password:</label>
<input type="password" id="password2" name="password2" class="form-control" value="" />
</div>
<div class="form-group">
<input type="submit" name="submit" value="Speichern" class="btn btn-primary" />
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
<script type="text/javascript">
$("#address_id").select2({
allowClear: true,
placeholder: ""
});
</script>
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?><?php

View File

@@ -0,0 +1,80 @@
<?php
$siteTitle = "Benutzer";
?>
<?php include(realpath(dirname(__FILE__)."/../")."/header.php"); ?>
<div class="wrapper">
<div class="container-fluid">
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>">the-tool</a></li>
<li class="breadcrumb-item">Benutzer</li>
</ol>
</div>
<h4 class="page-title">Benutzer</h4>
</div>
</div>
</div>
<!-- end page title -->
<!-- Main content -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<div class="float-left">
<h4 class="header-title mb-4">Benutzerliste</h4>
</div>
<div class="float-right">
<a class="btn btn-primary" href="<?=self::getUrl("User", "add")?>"><i class="fas fa-plus"></i> Neuen Benutzer anlegen</a>
</div>
<table class="table table-striped table-hover">
<tr>
<th>Username</th>
<th>Name</th>
<th>Firma / Person</th>
<th>Email</th>
<th>Admin</th>
<th></th>
</tr>
<?php foreach($users as $user): ?>
<tr>
<td><?=$user->username?></td>
<td><?=$user->name?></td>
<td><?=($user->address->company) ? $user->address->company : $user->address->getFullName()?></td>
<td><?=$user->email?></td>
<td><?=($user->isAdmin()) ? "Ja" : "Nein"?></td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<a href="<?=self::getUrl("User","edit", ['id' => $user->id])?>" title="User bearbeiten"><i class="far fa-edit"></i></a>
<?php if($user->id > 1): ?>
<a href="<?=self::getUrl("User","delete", ['id' => $user->id])?>" class="text-danger" title="User löschen" onclick="if(!confirm('Benutzer wirklich löschen?')) return false;"><i class="far fa-trash-alt"></i></a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
<!-- Control Sidebar -->
<aside class="control-sidebar control-sidebar-dark">
<!-- Control sidebar content goes here -->
</aside>
<!-- /.control-sidebar -->
<?php include(realpath(dirname(__FILE__)."/../")."/footer.php"); ?>

View File

@@ -3,7 +3,7 @@
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
&copy; 2021 <a href="https://www.xinon.at">Xinon GmbH</a> - Made by fronk - Simulor Theme by Coderthemes
the tool &copy; 2021 <a href="https://www.xinon.at">Xinon GmbH</a> - Made by fronk - Simulor Theme by Coderthemes
</div>
<div class="col-md-6">
<div class="text-md-right footer-links d-none d-sm-block">

View File

@@ -2,7 +2,7 @@
<html lang="en">
<head>
<meta charset="utf-8" />
<title>tool, the</title>
<title>the tool</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta content="A fully featured admin theme which can be used to build CRM, CMS, etc." name="description" />
<meta content="Coderthemes" name="author" />

View File

@@ -21,6 +21,9 @@
<li><a href="<?=self::getUrl("Address", "Index" , ["filter" => ["addresstype" => ["supplier"]]])?>">Lieferanten</a></li>
</ul>
</li>
<li>
<a href="<?=self::getUrl("User")?>">Benutzer</a>
</li>
</ul>
</li>

View File

@@ -41,9 +41,6 @@ class AddressController extends mfBaseController {
protected function saveAction() {
$r = $this->request;
//var_dump($r->get());exit;
$id = $r->id;
if(is_numeric($id) && $id > 0) {

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;
}
}

View File

@@ -19,8 +19,4 @@ class Layout extends mfLayout {
public function dotToComma($num) {
return str_replace(".", ",", $num);
}
public function arrayToUrl(Array $array) {
}
}