Ejemplo n.º 1
0
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;
 }