Skip to content

Commit 7f8211f

Browse files
author
Julia Koblitz
authored
Merge pull request #19 from JKoblitz/guests
Projects
2 parents 3998ba1 + 82c49c1 commit 7f8211f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+3122
-1062
lines changed

addons/auth/add-user.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
<form action="#" method="post">
1010

11-
<div class="form-row row-eq-spacing-sm">
11+
<div class="form-row row-eq-spacing">
1212
<div class="col">
1313
<label class="required" for="username">Username </label>
1414
<input class="form-control" type="text" id="username" name="username" required>
@@ -20,7 +20,7 @@
2020
</div>
2121

2222

23-
<div class="form-row row-eq-spacing-sm">
23+
<div class="form-row row-eq-spacing">
2424
<div class="col-sm-2">
2525
<?php
2626
$title = $data['academic_title'] ?? '';
@@ -49,7 +49,7 @@
4949

5050

5151

52-
<div class="form-row row-eq-spacing-sm">
52+
<div class="form-row row-eq-spacing">
5353
<div class="col-sm">
5454
<label for="dept"><?= lang('Department', 'Abteilung') ?></label>
5555
<select name="values[dept]" id="dept" class="form-control">

addons/auth/forgot-password.php

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<h1>
2+
<?= lang('Forgot password', 'Passwort vergessen') ?>
3+
</h1>
4+
5+
<?php if ($_SERVER['REQUEST_METHOD'] === 'POST') { ?>
6+
<form action="#" method="post">
7+
<input type="hidden" name="username" value="<?=$user['username']?>">
8+
<div class="form-group">
9+
<label class="required" for="password"><?= lang('New password', 'Neues Password') ?></label>
10+
<input class="form-control" type="password" id="password" name="password" required>
11+
</div>
12+
<button class="btn"><?= lang('Reset password', 'Passwort zurücksetzen') ?></button>
13+
</form>
14+
<?php } else { ?>
15+
<form action="#" method="post">
16+
<div class="row row-eq-spacing">
17+
<div class="col-sm">
18+
<label class="required" for="username">Username </label>
19+
<input class="form-control" type="text" id="username" name="values[username]" required>
20+
</div>
21+
<div class="col-sm">
22+
<label for="mail" class="required">Mail</label>
23+
<input type="text" name="values[mail]" id="mail" class="form-control" value="" required>
24+
</div>
25+
</div>
26+
27+
<div class="row row-eq-spacing">
28+
<div class="col-sm">
29+
<label class="required" for="first"><?= lang('First name', 'Vorname') ?></label>
30+
<input type="text" name="values[first]" id="first" class="form-control" value="" required>
31+
</div>
32+
<div class="col-sm">
33+
<label class="required" for="last"><?= lang('Last name', 'Nachname') ?></label>
34+
<input type="text" name="values[last]" id="last" class="form-control" value="" required>
35+
</div>
36+
</div>
37+
38+
<button class="btn"><?= lang('Reset password', 'Passwort zurücksetzen') ?></button>
39+
</form>
40+
<?php } ?>

addons/auth/index.php

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,56 @@
88
});
99

1010

11+
Route::get('/auth/reset-password', function () {
12+
include_once BASEPATH . "/php/init.php";
13+
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true && isset($_SESSION['username']) && !empty($_SESSION['username'])) {
14+
header("Location: " . ROOTPATH . "/profile/$_SESSION[username]");
15+
die;
16+
}
17+
$breadcrumb = [
18+
['name' => lang('Forgot password', 'Passwort vergessen')]
19+
];
20+
include BASEPATH . "/header.php";
21+
22+
include BASEPATH . "/addons/auth/forgot-password.php";
23+
include BASEPATH . "/footer.php";
24+
});
25+
26+
Route::post('/auth/reset-password', function () {
27+
include_once BASEPATH . "/php/init.php";
28+
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] === true && isset($_SESSION['username']) && !empty($_SESSION['username'])) {
29+
header("Location: " . ROOTPATH . "/profile/$_SESSION[username]");
30+
die;
31+
}
32+
33+
// check type of request
34+
if (isset($_POST['password']) && isset($_POST['username'])) {
35+
// reset password
36+
$osiris->persons->updateOne(
37+
['username' => $_POST['username']],
38+
['$set' => ['password' => $_POST['password']]]
39+
);
40+
header("Location: " . ROOTPATH . "/user/login");
41+
die;
42+
} else {
43+
$values = $_POST['values'];
44+
// check if data is correct and user can be found.
45+
$user = $osiris->persons->findOne($values);
46+
if (empty($user)) {
47+
header("Location: " . ROOTPATH . "/auth/reset-password?msg=user+could+not+be+found");
48+
die;
49+
}
50+
}
51+
52+
$breadcrumb = [
53+
['name' => lang('Forgot password', 'Passwort vergessen')]
54+
];
55+
include BASEPATH . "/header.php";
56+
include BASEPATH . "/addons/auth/forgot-password.php";
57+
include BASEPATH . "/footer.php";
58+
});
59+
60+
1161
Route::post('/auth/new-user', function () {
1262
include_once BASEPATH . "/php/init.php";
1363

addons/guestforms/form.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
<i class="ph ph-user-circle-plus text-osiris"></i>
2121
<?= lang('Guest Forms', 'Gast anmelden') ?>
2222
</h1>
23-
23+
<div class="alert danger mb-20">
24+
<p class="text-danger lead">
25+
Achtung! Dies ist nur ein Prototyp für die Entwicklung! Bitte noch nicht verwenden!
26+
</p>
27+
</div>
2428
<form action="<?= ROOTPATH ?>/guests/save" method="post" class="">
2529
<p class="text-muted">ID: <?= $id ?></p>
2630

@@ -58,7 +62,7 @@
5862
<select class="form-control" id="username" name="values[user]" autocomplete="off" required>
5963
<?php
6064
foreach ($osiris->persons->find(['username'=>['$ne'=>null]], ['sort' => ["last" => 1]]) as $j) { ?>
61-
<option value="<?= $j['_id'] ?>" <?= $j['_id'] == ($form['supervisor']['user'] ?? $_SESSION['username']) ? 'selected' : '' ?>><?= $j['last'] ?>, <?= $j['first'] ?></option>
65+
<option value="<?= $j['username'] ?>" <?= $j['username'] == ($form['supervisor']['user'] ?? $_SESSION['username']) ? 'selected' : '' ?>><?= $j['last'] ?>, <?= $j['first'] ?></option>
6266
<?php } ?>
6367
</select>
6468
</div>
@@ -196,7 +200,11 @@
196200
</div>
197201
<button type="submit" class="btn primary">
198202
<i class="ph ph-user-plus"></i>
199-
<?= lang('Save guest', 'Gast anlegen') ?>
203+
<?php if (empty($form)){
204+
echo lang('Save guest', 'Gast anlegen');
205+
} else {
206+
echo lang('Save guest', 'Gast speichern');
207+
} ?>
200208
</button>
201209

202210
</form>

addons/guestforms/index.php

Lines changed: 89 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -68,51 +68,119 @@
6868
echo "no values given";
6969
die;
7070
}
71-
$values = validateValues($_POST['values'], $DB);
71+
72+
$values = $_POST['values'];
73+
// get supervisor first, otherwise users are converted into authors
74+
$supervisor = $DB->getPerson($values['user']);
75+
if (empty($supervisor)) die('Supervisor does not exist');
76+
// remove supervisor from OG dataset
77+
unset($values['user']);
78+
79+
// standardize inputs
80+
$values = validateValues($values, $DB);
7281
// dump($_POST);
7382
if (!isset($values['id'])) {
7483
echo "no id given";
7584
die;
7685
}
7786
$id = $values['id'];
7887

79-
// add information on creating process
80-
$values['created'] = date('Y-m-d');
81-
$values['created_by'] = strtolower($_SESSION['username']);
88+
$finished = false;
89+
$guest_exist = $collection->findOne(['id' => $id]);
90+
if (!empty($guest_exist)) {
91+
$finished = $guest_exist['legal']['general'] ?? false;
92+
} else {
93+
// add information on creating process
94+
$values['created'] = date('Y-m-d');
95+
$values['created_by'] = strtolower($_SESSION['username']);
96+
97+
// check if check boxes are checked
98+
$values['legal']['general'] = $values['legal']['general'] ?? false;
99+
$values['legal']['data_security'] = $values['legal']['data_security'] ?? false;
100+
$values['legal']['data_protection'] = $values['legal']['data_protection'] ?? false;
101+
$values['legal']['safety_instruction'] = $values['legal']['safety_instruction'] ?? false;
102+
103+
// add supervisor information
104+
$values['supervisor'] = [
105+
"user" => $supervisor['username'],
106+
"name" => $supervisor['displayname']
107+
];
108+
}
82109

83-
// check if check boxes are checked
84-
$values['legal']['general'] = $values['legal']['general'] ?? false;
85-
$values['legal']['data_security'] = $values['legal']['data_security'] ?? false;
86-
$values['legal']['data_protection'] = $values['legal']['data_protection'] ?? false;
87-
$values['legal']['safety_instruction'] = $values['legal']['safety_instruction'] ?? false;
110+
// dump($values, true);
111+
if (!$finished) {
112+
// send data to guest server
113+
$URL = GUEST_SERVER . '/api/post';
114+
$postData = $values;
115+
$postData['secret'] = GUEST_FORM_SECRET_KEY;
116+
$postRes = CallAPI('JSON', $URL, $postData);
117+
$postRes = json_decode($postRes, true);
118+
if ($postRes['message'] != 'Success') {
119+
die($postRes['message']);
120+
}
121+
}
88122

123+
// check if guest already exists:
124+
if (!empty($guest_exist)) {
125+
$id = $guest_exist['id'];
126+
$collection->updateOne(
127+
['id' => $id],
128+
['$set' => $values]
129+
);
130+
} else {
131+
$insertOneResult = $collection->insertOne($values);
132+
}
89133

90-
// add supervisor information
91-
$supervisor = $DB->getPerson($values['user']);
92-
if (empty($supervisor)) die('Supervisor does not exist');
93-
$values['supervisor'] = [
94-
"user" => $supervisor['_id'],
95-
"name" => $supervisor['displayname']
96-
];
134+
header("Location: " . ROOTPATH . "/guests/view/$id?msg=success");
135+
}, 'login');
97136

98-
unset($values['user']);
137+
138+
139+
140+
141+
Route::post('/guests/synchronize/([a-z0-9]*)', function ($id) {
142+
include_once BASEPATH . "/php/init.php";
143+
144+
$collection = $osiris->guests;
145+
146+
// send data to guest server
147+
$URL = GUEST_SERVER . '/api/get/' . $id;
148+
if (!str_contains($URL, '//')) $URL = "https://" . $URL;
149+
$postData = [];
150+
$postData['secret'] = GUEST_FORM_SECRET_KEY;
151+
$postRes = CallAPI('GET', $URL, $postData);
152+
$values = json_decode($postRes, true);
99153

100154
// check if guest already exists:
101155
$guest_exist = $collection->findOne(['id' => $id]);
102156
if (!empty($guest_exist)) {
103-
$id = $guest_exist['id'];
104157
$collection->updateOne(
105158
['id' => $id],
106159
['$set' => $values]
107160
);
108161

109162
header("Location: " . ROOTPATH . "/guests/view/$id?msg=success");
110163
die;
164+
} else {
165+
header("Location: " . ROOTPATH . "/guests?msg=guest+not+found");
166+
die;
111167
}
168+
}, 'login');
169+
170+
171+
/**
172+
* Update data points within
173+
*/
174+
Route::post('/guests/update/([a-z0-9]*)', function ($id) {
175+
include_once BASEPATH . "/php/init.php";
176+
177+
$collection = $osiris->guests;
178+
$values = $_POST['values'];
112179

113-
// dump($values);
114-
// die;
115-
$insertOneResult = $collection->insertOne($values);
180+
$collection->updateOne(
181+
['id' => $id],
182+
['$set' => $values]
183+
);
116184

117185
header("Location: " . ROOTPATH . "/guests/view/$id?msg=success");
118186
}, 'login');

addons/guestforms/list.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
</h1>
55

66

7+
<div class="alert danger mb-20">
8+
<p class="text-danger lead">
9+
Achtung! Dies ist nur ein Prototyp für die Entwicklung! Bitte noch nicht verwenden!
10+
</p>
11+
</div>
12+
13+
714
<a href="<?= ROOTPATH ?>/guests/new" class="btn osiris">
815
<i class="ph ph-plus"></i>
916
<?= lang('Add new guest', 'Neuen Gast anmelden') ?>
@@ -19,7 +26,7 @@
1926
<th><?= lang('Affiliation', 'Affiliation') ?></th>
2027
<th><?= lang('Time of stay', 'Zeitraum des Aufenthalts') ?></th>
2128
<th><?= lang('Supervisor', 'Betreuer:in') ?></th>
22-
<th><?=lang('Complete', 'Vollständig')?></th>
29+
<th><?= lang('Complete', 'Vollständig') ?></th>
2330
</tr>
2431
</thead>
2532
<tbody>
@@ -44,7 +51,7 @@
4451
</td>
4552
<td>
4653
<?php
47-
$finished = (isset($entry['legal']['general']) && $entry['legal']['general']);
54+
$finished = ($entry['legal']['general'] ?? false);
4855
echo bool_icon($finished);
4956
?>
5057

0 commit comments

Comments
 (0)