Skip to content
This repository has been archived by the owner on Aug 6, 2023. It is now read-only.

Commit

Permalink
fix(#128): Get the number of devices authorized for user
Browse files Browse the repository at this point in the history
  • Loading branch information
fmbiete committed Jan 12, 2015
1 parent 7f6fc6f commit c2f61f9
Showing 1 changed file with 19 additions and 2 deletions.
21 changes: 19 additions & 2 deletions lib/default/sqlstatemachine.php
Original file line number Diff line number Diff line change
Expand Up @@ -609,6 +609,19 @@ public function GetUserDevicePermission($user, $devid) {
try {
$this->dbh = new PDO(STATE_SQL_DSN, STATE_SQL_USER, STATE_SQL_PASSWORD, $this->options);

$sql = "select count(*) from zpush_preauth_users where username = :user and device_id != 'authorized' and authorized = 1";
$params = array(":user" => $user);

// Get number of authorized devices for user
$num_devid_user = 0;
$sth = $this->dbh->prepare($sql);
$sth->execute($params);
if ($record = $sth->fetch(PDO::FETCH_ASSOC)) {
$num_devid_user = $record[0];
}
$record = null;
$sth = null;

$sql = "select authorized from zpush_preauth_users where username = :user and device_id = :devid";
$params = array(":user" => $user, ":devid" => "authorized");
$paramsNewDevid = array();
Expand Down Expand Up @@ -658,7 +671,7 @@ public function GetUserDevicePermission($user, $devid) {
// Device not pre-authorized

if (defined('PRE_AUTHORIZE_NEW_DEVICES') && PRE_AUTHORIZE_NEW_DEVICES === true) {
if (defined('PRE_AUTHORIZE_MAX_DEVICES') && PRE_AUTHORIZE_MAX_DEVICES >= count($userList[$user])) {
if (defined('PRE_AUTHORIZE_MAX_DEVICES') && PRE_AUTHORIZE_MAX_DEVICES > $num_devid_user) {
$paramsNewDevid[":auth"] = true;
ZLog::Write(LOGLEVEL_INFO, sprintf("SqlStateMachine->GetUserDevicePermission(): Pre-authorized new device '%s' for user '%s'", $devid, $user));
}
Expand All @@ -681,10 +694,14 @@ public function GetUserDevicePermission($user, $devid) {
if (defined('PRE_AUTHORIZE_NEW_USERS') && PRE_AUTHORIZE_NEW_USERS === true) {
$paramsNewUser[":auth"] = true;
if (defined('PRE_AUTHORIZE_NEW_DEVICES') && PRE_AUTHORIZE_NEW_DEVICES === true) {
if (defined('PRE_AUTHORIZE_MAX_DEVICES') && PRE_AUTHORIZE_MAX_DEVICES >= count($userList[$user])) {
if (defined('PRE_AUTHORIZE_MAX_DEVICES') && PRE_AUTHORIZE_MAX_DEVICES > $num_devid_user) {
$paramsNewDevid[":auth"] = true;
ZLog::Write(LOGLEVEL_INFO, sprintf("SqlStateMachine->GetUserDevicePermission(): Pre-authorized new device '%s' for new user '%s'", $devid, $user));
}
else {
$status = SYNC_COMMONSTATUS_MAXDEVICESREACHED;
ZLog::Write(LOGLEVEL_INFO, sprintf("SqlStateMachine->GetUserDevicePermission(): Max number of devices reached for user '%s', tried '%s'", $user, $devid));
}
}
else {
$status = SYNC_COMMONSTATUS_DEVICEBLOCKEDFORUSER;
Expand Down

0 comments on commit c2f61f9

Please sign in to comment.