diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /lib/elearning/ConnectedUser.php | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/elearning/ConnectedUser.php')
| -rw-r--r-- | lib/elearning/ConnectedUser.php | 512 |
1 files changed, 512 insertions, 0 deletions
diff --git a/lib/elearning/ConnectedUser.php b/lib/elearning/ConnectedUser.php new file mode 100644 index 0000000..3c74a14 --- /dev/null +++ b/lib/elearning/ConnectedUser.php @@ -0,0 +1,512 @@ +<?php +# Lifter002: TODO +# Lifter007: TODO +# Lifter003: TODO +# Lifter010: TODO + +DEFINE ("USER_TYPE_ORIGINAL" , "1"); +DEFINE ("USER_TYPE_CREATED", "0"); + +/** +* class to handle user-accounts +* +* This class contains methods to handle connected user-accounts. +* +* @author Arne Schröder <schroeder@data-quest.de> +* @access public +* @modulegroup elearning_interface_modules +* @module ConnectedUser +* @package ELearning-Interface +*/ +class ConnectedUser +{ + var $cms_type; + var $id; + var $studip_id; + var $studip_login; + var $studip_password; + var $login; + var $external_password; + var $category; + var $gender; + var $title_front; + var $title_rear; + var $title; + var $firstname; + var $lastname; + var $institution; + var $department; + var $street; + var $city; + var $zipcode; + var $country; + var $phone_home; + var $fax; + var $matriculation; + var $email; + var $type; + var $is_connected; + + var $db_class; + /** + * constructor + * + * init class. don't call directly, class is loaded by ConnectedCMS. + * @access public + * @param string $cms system-type + */ + function __construct($cms, $user_id = false) + { + global $auth, $ELEARNING_INTERFACE_MODULES; + + $this->studip_id = $user_id ? $user_id : $auth->auth["uid"]; + $this->cms_type = $cms; + + if ($ELEARNING_INTERFACE_MODULES[$this->cms_type]["RELATIVE_PATH_DB_CLASSES"] != false) + { + require_once("lib/elearning/" . $ELEARNING_INTERFACE_MODULES[$this->cms_type]["RELATIVE_PATH_DB_CLASSES"] . "/" . $ELEARNING_INTERFACE_MODULES[$this->cms_type]["db_classes"]["user"]["file"] ); + $classname = $ELEARNING_INTERFACE_MODULES[$this->cms_type]["db_classes"]["user"]["classname"]; + $this->db_class = new $classname(); + } + $this->readData(); + $this->getStudipUserData(); + } + + /** + * get data + * + * gets data from database + * @access public + * @return boolean returns false, if no data was found + */ + function readData() + { + $query = "SELECT external_user_id, external_user_name, external_user_password, external_user_category, external_user_type + FROM auth_extern + WHERE studip_user_id = ? AND external_user_system_type = ?"; + $statement = DBManager::get()->prepare($query); + $statement->execute([$this->studip_id, $this->cms_type]); + $data = $statement->fetch(PDO::FETCH_ASSOC); + + if (!$data) { + $this->id = ''; + $this->is_connected = false; + return false; + } + + $this->id = $data['external_user_id']; + $this->login = $data['external_user_name']; + $this->external_password = $data['external_user_password']; + $this->category = $data['external_user_category']; + $this->type = $data['external_user_type']; + $this->is_connected = true; + + return true; + } + + /** + * get stud.ip-user-data + * + * gets stud.ip-user-data from database + * @access public + * @return boolean returns false, if no data was found + */ + function getStudipUserData() + { + global $connected_cms; + + $query = "SELECT username, password, title_front, title_rear, Vorname, + Nachname, Email, privatnr, privadr, geschlecht + FROM auth_user_md5 + LEFT JOIN user_info USING (user_id) + WHERE user_id = ?"; + $statement = DBManager::get()->prepare($query); + $statement->execute([$this->studip_id]); + $data = $statement->fetch(PDO::FETCH_ASSOC); + + if (!$data) { + return false; + } + + $this->studip_login = $data['username']; + if ($this->is_connected == false) { + $this->login = $connected_cms[$this->cms_type]->getUserPrefix() . $this->studip_login; + } + + $this->studip_password = $data['password']; + $this->title_front = $data['title_front']; + $this->title_rear = $data['title_rear']; + $this->firstname = $data['Vorname']; + $this->lastname = $data['Nachname']; + $this->email = $data['Email']; + $this->phone_home = $data['privatnr']; + $this->street = $data['privadr']; + $this->gender = ($data['geschlecht'] == 2 ? 'f' : 'm'); + + if ($this->title_front != '') { + $this->title = $this->title_front; + } + if ($this->title_front != '' && $this->title_rear != '') { + $this->title .= ' '; + } + if ($this->title_rear != '') { + $this->title .= $this->title_rear; + } + return true; + } + + /** + * create new user-account + * + * dummy-method. returns false. must be overwritten by subclass. + * @access public + * @return boolean returns false + */ + function newUser() + { + return false; + } + + /** + * update user-account + * + * dummy-method. must be overwritten by subclass. + */ + public function updateUser() + { + } + + /** + * delete user-account + * + * dummy-method. returns false. must be overwritten by subclass. + * @access public + * @return boolean returns false + */ + function deleteUser() + { + return false; + } + + /** + * get login-data of user-account + * + * dummy-method. returns false. must be overwritten by subclass. + * @access public + * @return boolean returns false + */ + function getLoginData($username) + { + return false; + } + + /** + * get id + * + * returns id + * @access public + * @return string id + */ + function getId() + { + return $this->id; + } + + /** + * get stud.ip user-id + * + * returns id + * @access public + * @return string stud.ip user-id + */ + function getStudipId() + { + return $this->studip_id; + } + + /** + * get username + * + * returns username + * @access public + * @return string username + */ + function getUsername() + { + return $this->login; + } + + /** + * set username + * + * sets username + * @access public + * @param string $user_login username + */ + function setUsername($user_login) + { + $this->login = $user_login; + } + + /** + * get password + * + * returns password + * @access public + * @return string password + */ + function getPassword() + { + return $this->external_password; + } + + /** + * set password + * + * sets password + * @access public + * @param string $user_password password + */ + function setPassword($user_password) + { + $this->external_password = $user_password; + } + + /** + * get user category + * + * returns id + * @access public + * @return string id + */ + function getCategory() + { + return $this->category; + } + + /** + * set user category + * + * sets user category + * @access public + * @param string $user_category category + */ + function setCategory($user_category) + { + $this->category = $user_category; + } + + /** + * get crypted password + * + * dummy-method. returns false. must be overwritten by subclass. + * @access public + * @return boolean returns false + */ + function getCryptedPassword($password) + { + return false; + } + + /** + * verify login data + * + * returns true, if login-data is valid + * @access public + * @param string $username username + * @param string $password password + * @return boolean login-validation + */ + function verifyLogin($username, $password) + { + $this->getLoginData($username); + if (($username == "") OR ($password == "")) + return false; + if ( ($this->login == $username) AND ($this->external_password == $this->getCryptedPassword($password) ) ) + return true; + return false; + } + + /** + * get gender + * + * returns gender-setting + * @access public + * @return string gender-setting + */ + function getGender() + { + return $this->gender; + } + + /** + * set gender + * + * sets gender + * @access public + * @param string $user_gender gender-setting + */ + function setGender($user_gender) + { + $this->gender = $user_gender; + } + + /** + * get full name + * + * returns full name + * @access public + * @return string name + */ + function getName() + { + if ($this->title != "") + return $this->title . ' ' . $this->firstname . ' ' . $this->lastname; + else + return $this->firstname . ' ' . $this->lastname; + } + + /** + * get firstname + * + * returns firstname + * @access public + * @return string firstname + */ + function getFirstname() + { + return $this->firstname; + } + + /** + * set firstname + * + * sets firstname + * @access public + * @param string $user_firstname firstname + */ + function setFirstname($user_firstname) + { + $this->firstname = $user_firstname; + } + + /** + * get lastname + * + * returns lastname + * @access public + * @return string lastname + */ + function getLastname() + { + return $this->lastname; + } + + /** + * set lastname + * + * sets lastname + * @access public + * @param string $user_lastname lastname + */ + function setLastname($user_lastname) + { + $this->lastname = $user_lastname; + } + + /** + * get email-adress + * + * returns email-adress + * @access public + * @return string email-adress + */ + function getEmail() + { + return $this->email; + } + + /** + * set email-adress + * + * sets email-adress + * @access public + * @param string $user_email email-adress + */ + function setEmail($user_email) + { + $this->email = $user_email; + } + + /** + * get user-type + * + * returns user-type + * @access public + * @return string user-type + */ + function getUserType() + { + return $this->type; + } + + /** + * set user-type + * + * sets user-type + * @access public + * @param string $user_type user-type + */ + function setUserType($user_type) + { + $this->type = $user_type; + } + + /** + * save connection for user-account + * + * saves user-connection to database and sets type for actual user + * @param string $user_type user-type + */ + public function setConnection($user_type) + { + $this->setUserType($user_type); + + $query = "INSERT INTO auth_extern (studip_user_id, external_user_id, external_user_name, + external_user_password, external_user_category, + external_user_system_type, external_user_type) + VALUES (?, ?, ?, ?, ?, ?, ?) + ON DUPLICATE KEY + UPDATE external_user_name = VALUES(external_user_name), + external_user_password = VALUES(external_user_password), + external_user_category = VALUES(external_user_category), + external_user_id = VALUES(external_user_id), + external_user_type = VALUES(external_user_type)"; + $statement = DBManager::get()->prepare($query); + $statement->execute([ + (string)$this->studip_id, + (string)$this->id, + (string)$this->login, + (string)$this->external_password, + (string)$this->category, + (string)$this->cms_type, + (int)$this->type, + ]); + + $this->is_connected = true; + $this->readData(); + } + + /** + * get connection-status + * + * returns true, if there is a connected user + * @access public + * @return boolean connection-status + */ + function isConnected() + { + return $this->is_connected; + } +} +?> |
