This commit is contained in:
2026-09-10 15:10:59 +02:00
parent 9016fb7baf
commit b8f9430827
8 changed files with 1339 additions and 8 deletions
+92
View File
@@ -0,0 +1,92 @@
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . '/php/auto/auto.php';
use LdapRecord\Connection;
$nimrodLDAP = new Connection([
'hosts' => [getenv('LDAP_HOST')],
'port' => 389,
'base_dn' => getenv('LDAP_BASEDN'),
'username' => getenv('LDAP_USER'),
'password' => getenv('LDAP_SECRET')
]);
if (!isset($_POST['uporabnik']) || !isset($_POST['geslo'])) {
echo json_encode(["napaka" => "manjkajo podatki"]);
exit;
}
$username = $_POST['uporabnik'];
$geslo = $_POST['geslo'];
try {
$nimrodLDAP->connect();
} catch (Exception $e) {
echo 'napaka pri povezavi na LDap';
echo $e;
exit;
}
$LUser = $nimrodLDAP->query()->findBy('samaccountname', $username);
if (empty($LUser)) {
echo json_encode(["napaka" => "uporabnik ni najden"]);
exit;
}
$vGrupah = $LUser['memberof'];
$dGrupe = [
'cn=Nimrod_Web,ou=Nimrod OU,dc=nimrod,dc=local',
];
$razlikaGrup = array_intersect(
array_map('strtolower', $vGrupah),
array_map('strtolower', $dGrupe)
);
if (count($razlikaGrup) <= 0) {
echo json_encode(["napaka" => "nimaš pravic skupinskih"]);
exit;
}
$emailUserja = $LUser['userprincipalname'][0];
$user = $LUser['distinguishedname'][0];
if (!$nimrodLDAP->auth()->attempt($user, $geslo, $stayAuthenticated = true)) {
echo json_encode(["napaka" => "napacno geslo"]);
exit;
}
$uporabnik = $LUser['displayname'][0];
$email = $LUser['mail'][0];
$find = $conn->prepare("SELECT user_id, username FROM users WHERE email = :email");
$find->execute([':email' => $email]);
$obstojeciUporabnik = $find->fetch();
if ($obstojeciUporabnik) {
$update = $conn->prepare("UPDATE users SET display_name = :display_name WHERE user_id = :user_id");
$update->execute([':display_name' => $uporabnik, ':user_id' => $obstojeciUporabnik['user_id']]);
$_SESSION['id'] = $obstojeciUporabnik['user_id'];
$_SESSION['username'] = $obstojeciUporabnik['username'];
} else {
$insert = $conn->prepare("INSERT INTO users (username, email, display_name) VALUES (:username, :email, :display_name)");
$insert->execute([':username' => $username, ':email' => $email, ':display_name' => $uporabnik]);
$_SESSION['id'] = $conn->lastInsertId();
$_SESSION['username'] = $username;
}
$_SESSION['displayname'] = $uporabnik;
$_SESSION['email'] = $email;
echo json_encode(["res" => "uspesno"]);