-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings.php
178 lines (161 loc) · 9.13 KB
/
settings.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
<?PHP
// error_reporting(E_ALL); ini_set('display_errors', 1);
require("import/sessionstart.php");
require_once("api/requirelogin.php");
function encodeURIComponent($str) {
$revert = array('%21'=>'!', '%2A'=>'*', '%27'=>"'", '%28'=>'(', '%29'=>')');
return strtr(rawurlencode($str), $revert);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Assembl Account Settings</title>
<base href="https://accounts.assembl.net/" />
<link rel="stylesheet" href="/loginstyles.css" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" type="image/ico" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#193864" />
<script>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)", "i"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function setMinMaxBirthDate() {
var date = new Date();
var dd = date.getDate();
var mm = date.getMonth()+1;
var yyyy = date.getFullYear();
if(dd<10){
dd='0'+dd;
}
if(mm<10){
mm='0'+mm;
}
var today = yyyy+'-'+mm+'-'+dd;
var longago = (yyyy - 150)+'-'+mm+'-'+dd;
document.getElementById("settings-form-birth-date").setAttribute("max", today);
document.getElementById("settings-form-birth-date").setAttribute("min", longago);
}
</script>
</head>
<body>
<div class="signin-table">
<div class="signin-table-cell">
<div class="signin-table-cell-content">
<div style="display: none;" id="loading">
<img class="loading-svg" src="import/loading.svg" />
</div>
<script src="/import/loader.js"></script>
<h1>Assembl</h1>
<h2>Account Settings</h2>
<hr />
<form action="/callback/settings-cb/" method="post" autocomplete="off">
<fieldset>
<legend>Your Details</legend>
<label for="settings-form-name">Name</label>
<div class="form-error"><?PHP if (isset($_SESSION["settings_errors"]) && isset($_SESSION["settings_errors"]["name"]) && !empty($_SESSION["settings_errors"]["name"])) { echo $_SESSION["settings_errors"]["name"]; } ?></div>
<input class="assembl-input" type="text" maxlength="64" id="settings-form-name" name="settings-form-name" value="<?PHP echo $_SESSION["userdata"]["name"]; ?>" />
<label for="settings-form-birth-date">Birth date</label>
<div class="form-error"><?PHP if (isset($_SESSION["settings_errors"]) && isset($_SESSION["settings_errors"]["birth-date"]) && !empty($_SESSION["settings_errors"]["birth-date"])) { echo $_SESSION["settings_errors"]["birth-date"]; } ?></div>
<input class="assembl-input" type="date" id="settings-form-birth-date" name="settings-form-birth-date" value="<?PHP echo $_SESSION["userdata"]["birth_date"]; ?>" placeholder="YYYY-MM-DD" />
<script> setMinMaxBirthDate(); </script>
<label for="settings-form-email">E-mail address</label>
<div class="form-error"><?PHP if (isset($_SESSION["settings_errors"]) && isset($_SESSION["settings_errors"]["email"]) && !empty($_SESSION["settings_errors"]["email"])) { echo $_SESSION["settings_errors"]["email"]; } ?></div>
<input class="assembl-input" type="email" maxlength="100" id="settings-form-email" name="settings-form-email" value="<?PHP echo $_SESSION["userdata"]["email_address"]; ?>" placeholder="example@domain.com" />
<label for="settings-form-org-affiliation">Position & Organization</label>
<div class="form-error"><?PHP if (isset($_SESSION["settings_errors"]) && isset($_SESSION["settings_errors"]["org-affiliation"]) && !empty($_SESSION["settings_errors"]["org-affiliation"])) { echo $_SESSION["settings_errors"]["org-affiliation"]; } ?></div>
<input class="assembl-input" type="text" maxlength="100" id="settings-form-org-affiliation" name="settings-form-org-affiliation" value="<?PHP echo $_SESSION["userdata"]["org_affiliation"]; ?>" placeholder="e.g. Researcher at Random Institute" />
</fieldset>
<fieldset>
<legend>Connections</legend>
<label for="settings-form-orcid">ORCID iD</label>
<?PHP
require("import/assembldb.php");
$connection = AssemblDB::getAccountsConnection();
$sql = "SELECT * FROM `users`.`orcid` WHERE `uid`='".AssemblDB::makeSafe($_SESSION["userdata"]["uid"], $connection)."' LIMIT 1";
$result = mysqli_query($connection, $sql);
$orcidData = mysqli_fetch_assoc($result);
if (!empty($orcidData["orcid_id"])) {
?>
<input class="assembl-input" readonly type="text" value="<?PHP echo $orcidData["orcid_id"]; ?>" />
<small><a href="/disconnect/?s=orcid">Disconnect</a></small>
<?PHP
}
else {
?>
<a href="/connect/?s=orcid">Connect your ORCID iD</a>
<?PHP
}
?>
</fieldset>
<fieldset>
<legend>Security</legend>
<a href="/passwordreset/?email=<?PHP echo encodeURIComponent($_SESSION["userdata"]["email_address"]); ?>&continue=https%3A%2F%2Faccounts.assembl.net%2Fsettings%2F">Change your password</a>
<br />
<a href="/history/?of=logins">View login history</a>
</fieldset>
<fieldset>
<legend>Delete account</legend>
<a href="/delete/">Delete your account</a>
</fieldset>
<br />
<input type="submit" class="assembl-btn full-width" id="settings-form-submit" name="settings-form-submit" value="Save" />
</form>
</div>
</div>
</div>
<script>
function confirmOnPageExit(e) {
e = e || window.event;
var message = "Changes you made may not be saved.";
if (e) {
e.returnValue = message;
}
return message;
}
function enableExitConfirmation() {
console.log("Exit Confirmation enabled");
window.onbeforeunload = confirmOnPageExit;
}
function disableExitConfirmation() {
console.log("Exit Confirmation disabled");
window.onbeforeunload = null;
}
function setUpPageExitConfirmation() {
var elems = [];
elems = elems.concat([].slice.call(document.getElementsByTagName("input")));
elems = elems.concat([].slice.call(document.getElementsByTagName("textarea")));
elems = elems.concat([].slice.call(document.getElementsByTagName("select")));
elems = elems.concat([].slice.call(document.getElementsByTagName("form")));
for (var i = 0; i < elems.length; i++) {
switch(elems[i].tagName.toLowerCase()) {
case "input":
case "textarea":
if (elems[i].getAttribute("type") != "file") {
elems[i].addEventListener("input", enableExitConfirmation);
}
else {
elems[i].addEventListener("change", enableExitConfirmation);
}
break;
case "select":
elems[i].addEventListener("change", enableExitConfirmation);
break;
case "form":
elems[i].addEventListener("change", disableExitConfirmation);
break;
}
}
}
setUpPageExitConfirmation();
</script>
</body>
</html>