-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy path2FA.php
129 lines (116 loc) · 5.4 KB
/
2FA.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
<?php
include_once('include/functions.php');
include_once('include/config.php');
include_once('include/HTML_TopBottom.php');
$db = connect_db();
$cfgProgDir = 'auth/';
include($cfgProgDir. "secure.php");
include_once($cfgProgDir.'../include/google2fa/2FA.php');
if(get2FACode($_SESSION['useID']) != '') {
if(isset($_POST['entered_2FA'])) {
$google2fa = new \PragmaRX\Google2FA\Google2FA();
$secret_key = get2FACode($_SESSION['useID']);
if(!$google2fa->verifyKey($secret_key, $_POST['entered_2FA'])) {
toLog('debug', '', 'Foutieve 2FA-code bij verwijderen 2FA');
$phpSP_message = 'Onjuiste code';
include($cfgProgDir . "2FA.php");
exit;
} else {
$sql_update = "UPDATE $TableUsers SET $User2FA = '' WHERE $UserID = ". $_SESSION['useID'];
if(mysqli_query($db, $sql_update)) {
$text[] = "De 2FA is succesvol verwijderd.<br>";
$text[] = "Vanaf nu log je alleen nog maar in met je gebruikersnaam & wachtwoord.";
toLog('info', '', '2FA verwijderd');
} else {
$text[] = "Er zijn problemen met het verwijderen van 2FA.";
toLog('error', '', 'Kon 2FA niet verwijderen');
}
}
} elseif(isset($_POST['next'])) {
include($cfgProgDir . "2FA.php");
exit;
} else {
$text[] = "<form method='post'>";
$text[] = "<table>";
$text[] = "<tr>";
$text[] = " <td>Je staat op het punt 2FA uit te zetten. Vanuit het oogpunt van veiligheid is dat niet aan te raden.<br>";
$text[] = " Mocht je op 'Volgende' klikken, dan zal je voor de laatste keer gevraagd worden een 2FA-code in te voeren.<br>";
$text[] = "Dit om zeker te weten dat jij ". makeName($_SESSION['useID'], 5) ." bent";
$text[] = " </td>";
$text[] = "</tr>";
$text[] = "<tr>";
$text[] = " <td align='center'> </td>";
$text[] = "</tr>";
$text[] = "<tr>";
$text[] = " <td align='center'><input type='submit' name='next' value='Volgende'></td>";
$text[] = "</tr>";
$text[] = "</table>";
$text[] = "</form>";
}
} else {
if(isset($_POST['save'])) {
$sql_update = "UPDATE $TableUsers SET $User2FA = '". $_POST['secret'] ."' WHERE $UserID = ". $_SESSION['useID'];
if(mysqli_query($db, $sql_update)) {
$text[] = "De 2FA is ingesteld.<br>";
$text[] = "Vanaf nu moet je naast je gebruikersnaam & wachtwoord, ook inloggen met de code die je app genereert.<br>";
$text[] = "Dit geldt overigens alleen als je inlogd van een onbekende computer. Mocht je eerder van dezelfde computer ingelogd hebben, dan zal de 2FA-code niet gevraagd worden.";
toLog('info', '', '2FA ingesteld');
} else {
$text[] = "Er zijn problemen met het instellen van 2FA.";
toLog('error', '', 'Kon 2FA niet instellen');
}
} elseif(isset($_POST['next'])) {
$personData = getMemberDetails($_SESSION['useID']);
$google2fa = new \PragmaRX\Google2FA\Google2FA();
$secret_key = $google2fa->generateSecretKey();
$QR = $google2fa->getQRCodeUrl($ScriptServer, $personData['username'], $secret_key);
$image_url = 'https://chart.googleapis.com/chart?cht=qr&chs=300x300&chl='.$QR;
$text[] = "<form method='post'>";
$text[] = "<input type='hidden' name='secret' value='$secret_key'>";
$text[] = "<table align='center'>";
$text[] = "<tr>";
$text[] = " <td align='center'>Voeg onderstaande QR-code toe aan de app en klik op 'Volgende' als dat gelukt is</td>";
$text[] = "</tr>";
$text[] = "<tr>";
$text[] = " <td align='center'><img src='$image_url'/></td>";
$text[] = "</tr>";
$text[] = "<tr>";
$text[] = " <td align='center'><input type='submit' name='save' value='Volgende'></td>";
$text[] = "</tr>";
$text[] = "</table>";
$text[] = "</form>";
toLog('debug', '', '2FA-code gegenereerd en getoond');
} else {
$text[] = "Om 2 factor authenticatie (2FA) aan te zetten, heb je een app op je telefoon, tablet of computer nodig die een code kan genereren.<br>";
$text[] = " <br>";
$text[] = "Er zijn verschillende apps die dat kunnen, de bekendste is Google Authenticator. Die is te downloaden voor";
$text[] = "<ul>";
$text[] = " <li><a href='https://apps.apple.com/us/app/google-authenticator/id388497605'>iOS</a></li>";
$text[] = " <li><a href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2'>Android</a></li>";
$text[] = " <li><a href='https://www.microsoft.com/en-us/store/p/google-authenticator/9wzdncrdnkrf'>Windows</a></li>";
$text[] = "</ul>";
$text[] = "Alternatieven zijn :";
$text[] = "<ul>";
$text[] = " <li><a href='https://www.authy.com/download'>Authy</a></li>";
#$text[] = " <li><a href=''>FreeOTP</a></li>";
$text[] = " <li><a href='https://www.microsoft.com/nl-nl/store/apps/authenticator/9wzdncrfj3rj'>Microsoft Authenticator</a></li>";
$text[] = " <li><a href='https://lastpass.com/misc_download2.php'>LastPass Authenticator</a></li>";
$text[] = " <li><a href='https://1password.com/downloads/'>1Password</a></li>";
$text[] = "</ul>";
$text[] = " <br>";
$text[] = "Zorg dat een van bovenstaande apps geïnstalleerd is, en klik op 'Volgende'<br>";
$text[] = "<form method='post'>";
$text[] = "<table width='100%'>";
$text[] = "<tr>";
$text[] = " <td align='right'><input type='submit' name='next' value='Volgende'></td>";
$text[] = "</tr>";
$text[] = "</table>";
$text[] = "</form>";
}
}
echo showCSSHeader();
echo '<div class="content_vert_kolom_full">'.NL;
echo "<div class='content_block'>". implode(NL, $text) ."</div>".NL;
echo '</div> <!-- end \'content_vert_kolom_full\' -->'.NL;
echo showCSSFooter();
?>