function validate_form($userDetails, $type = 'User') { $error = array(); if ($type == 'User') { if (!DatabaseFunctions::getInstance()->checkUniqueUsername($userDetails['Username'])) { $error[] = T_("Username already taken"); } if (!$userDetails['Username'] || !$userDetails['Password']) { $error[] = T_("Username and Password are both Required"); } } if ($type == 'Computer') { if (!DatabaseFunctions::getInstance()->checkUniqueUsername($userDetails['mac'])) { $error[] = T_("MAC Address already has an account"); } if (!\Grase\Validate::MACAddress($userDetails['mac'])) { $error[] = T_("MAC Address not in correct format"); } } if (!\Grase\Validate::numericLimit($userDetails['MaxMb']) && $userDetails['MaxMb'] != '') { $error[] = sprintf(T_("Invalid value '%s' for 1 Data Limit"), $userDetails['MaxMb']); } if (!\Grase\Validate::numericLimit($userDetails['Max_Mb']) && $userDetails['Max_Mb'] != 'inherit') { $error[] = sprintf(T_("Invalid value '%s' for Data Limit"), $userDetails['Max_Mb']); } if (!\Grase\Validate::numericLimit($userDetails['MaxTime']) && $userDetails['MaxTime'] != '') { $error[] = sprintf(T_("Invalid value '%s' for Time Limit"), $userDetails['MaxTime']); } if (!\Grase\Validate::numericLimit($userDetails['Max_Time']) && $userDetails['Max_Time'] != 'inherit') { $error[] = sprintf(T_("Invalid value '%s' for Time Limit"), $userDetails['Max_Time']); } if ((is_numeric($userDetails['Max_Mb']) || $userDetails['Max_Mb'] == 'inherit') && is_numeric($userDetails['MaxMb'])) { $error[] = T_("Only set one Data limit field"); } if ((is_numeric($userDetails['Max_Time']) || $userDetails['Max_Time'] == 'inherit') && is_numeric($userDetails['MaxTime'])) { $error[] = T_("Only set one Time limit field"); } $error[] = validate_group($userDetails['Group']); return array_filter($error); }
public function getUserDetails($username) { $username = mb_strtolower($username); if ($this->usercacheloaded) { $Userdata = $this->usercache[$username]['radcheck']; $Userreplydata = $this->usercache[$username]['radreply']; $Userdata['Username'] = $this->usercache[$username]['Username']; } else { $Userdata['Username'] = $username; // Get radcheck attributes $sql = sprintf("SELECT Attribute, Value\n FROM radcheck\n WHERE Username = %s", $this->db->quote($username)); $results = $this->db->queryAll($sql); if (PEAR::isError($results)) { \Grase\ErrorHandling::fatalDatabaseError(T_('Get User details Query failed: '), $results); } foreach ($results as $attribute) { $Userdata[$attribute['Attribute']] = $attribute['Value']; } // Get radreply attributes $sql = sprintf("SELECT Attribute, Value\n FROM radreply\n WHERE Username = %s", $this->db->quote($username)); $results = $this->db->queryAll($sql); if (PEAR::isError($results)) { \Grase\ErrorHandling::fatalDatabaseError(T_('Get User radreply details Query failed: '), $results); } foreach ($results as $attribute) { $Userreplydata[$attribute['Attribute']] = $attribute['Value']; } } // User Password (Upgraded to Cleartext-Password, but smarty doesn't like '-' in names) if (isset($Userdata['Cleartext-Password']) && !isset($Userdata['Password'])) { $Userdata['Password'] = $Userdata['Cleartext-Password']; } // User Data Limit if (isset($Userdata['Max-Octets'])) { $Userdata['MaxOctets'] = $Userdata['Max-Octets']; $Userdata['MaxMb'] = sprintf('%0.2f', $Userdata['Max-Octets'] / 1024 / 1024); //Needed for forms } // User Expiry if (isset($Userdata['Expiration'])) { $Userdata['FormatExpiration'] = date("M j Y H:i:s", strtotime($Userdata['Expiration'])); if (substr($Userdata['Expiration'], -8) == "00:00:00") { $Userdata['FormatExpiration'] = substr($Userdata['FormatExpiration'], 0, -8); } $Userdata['ExpirationTimestamp'] = strtotime($Userdata['Expiration']); } else { $Userdata['Expiration'] = "--"; $Userdata['FormatExpiration'] = "--"; } if (isset($Userdata['GRASE-ExpireAfter'])) { $Userdata['ExpireAfter'] = $Userdata['GRASE-ExpireAfter']; } // User Account Lockout if (isset($Userdata['Auth-Type'])) { // Check we are actually locked (Reject) if ($Userdata['Auth-Type'] == "Reject") { $Userdata['AccountLock'] = true; $Userdata['LockReason'] = $Userreplydata['Reply-Message']; } // Get message } // User "time" limit if (isset($Userdata['Max-All-Session'])) { $Userdata['MaxAllSession'] = $Userdata['Max-All-Session']; $Userdata['MaxTime'] = $Userdata['Max-All-Session'] / 60; } // Get User Group $Userdata['Group'] = $this->getUserGroup($username); // Get Data usage $Userdata['AcctTotalOctets'] = $this->getUserDataUsage($username); $Userdata['TotalOctets'] = $this->getUserDataUsageTotal($username); // Get Total Session Time $Userdata['TotalTimeMonth'] = $this->getUserTotalSessionTime($username); $Userdata['TotalTimeAll'] = $this->getUserSessionTimeTotal($username); // User remaining time if (isset($Userdata['Max-All-Session'])) { $Userdata['RemainingSeconds'] = $Userdata['Max-All-Session'] - $Userdata['TotalTimeMonth']; if ($Userdata['RemainingSeconds'] < 0) { $Userdata['RemainingSeconds'] = 0; } } // Get Last Logout $Userdata['LastLogout'] = $this->getUserLastLogoutTime($username); // Get Account Status $Userdata['account_status'] = $this->_userAccountStatus($Userdata); // Get User Comment $Userdata['Comment'] = $this->getUserComment($username); // Determin if this is a computer account $Userdata['isComputer'] = false; if (\Grase\Validate::MACAddress($username)) { $Userdata['isComputer'] = true; } // Get Information about groups (it's cached, so might as well fetch it all) $groupdata = $this->getGroupAttributes(); if (isset($groupdata[$Userdata['Group']])) { $Userdata['GroupSettings'] = $groupdata[$Userdata['Group']]; } return $Userdata; }