_storage = $storage; /* load config */ //$this->_config = $this->_storage->fetchConfig('USER'); /* map properti class ke tabel sehingga nama field di tabel dapat diwakili oleh property class */ parent::__construct( array(), array( new Map('iduser','id'), new Map('username'), new Map('password'), new Map('name'), new Map('role'), new Map('status'), new Map('deviceid'), new Map('create_dtm'), new Map('retries'), new Map('email'), new Map('tokenjwt'), new Map('lifetime'), new Map('update_date'), new Map('accessToken'), new Map('nim'), new Map('kaprodi'), new Map('status'), new Map('prodi'), new Map('koordinator'), new Map('nopeg') ), parent::CASE_SENSITIVE ); } /** save */ public function save($update = false) { /* simpan via storage */ $result = $this->_storage->save($this, $update); if ($result->code == 0) { $this->id = $result->data; } return $result; } public function load($id, $mode = User\Storage::LOADBY_ID){ /* load dari storage */ if ($data = $this->_storage->load($id, $mode)) { /* load sukses, set data properti class dari hasil query */ $this->push($data); /* set loaded */ $this->_loaded = true; return true; } else { $this->_loaded = false; } } public function loadAccess($id, $postgree = false){ /* load access data */ $acc = $this->_storage->getAccess($id, $postgree); return $acc; } public function authenticate($credential, $data = array(), $retriesMode = self::RETRIES_FALSE){ $result = new Result(); $retries = 0; /* loaded */ if ($this->id && $this->_loaded) { /* jika user aktif */ if (($this->status == self::STATUS_ACTIVE)) { if($this->password == md5($credential)){ $authenticated = true; }else{ $authenticated = false; } if ($authenticated) { $this->retries = 'NULL'; $this->save(true); /* QA: auth success */ $result->code = $result::CODE_SUCCESS; $result->info = 'user_auth_success'; }else{ /* cek user jika gagal password sebanyak 3x */ if($retriesMode == self::RETRIES_TRUE){ if($this->retries == 'NULL'){ $ret_data = 0; }else{ $ret_data = (int) $this->retries; } if($ret_data < 3){ $this->retries = $ret_data + 1; } if((int) $this->retries == 3){ // jika sudah mencapai 3x then $this->status = self::STATUS_BLOCKED; } $this->save(true); } /* QA: fail invalid passwd */ $result->code = self::CODE_AUTH_FAILED; $result->info = 'user_auth_failed'; } }else{ /* QA: user is locked */ $result->code = self::CODE_AUTH_LOCKED; $result->info = 'user_auth_locked'; } }else{ /* QA: user not loaded */ $result->code = self::CODE_AUTH_INVALID; $result->info = 'user_auth_invalid'; } /* return result */ return $result; } public function identify($data, $status){ $result = new Result(); $result = $this->_storage->checkIdentify($data, $status); return $result; } public function identifymhs($data, $status){ $result = new Result(); $result = $this->_storage->checkIdentifymhs($data, $status); return $result; } public function saveidentify($data){ $result = new Result(); $result = $this->_storage->saveidentify($data); return $result; } public function savemhs($data, $user, $status){ $result = new Result(); $result = $this->_storage->savemhs($data, $user, $status); return $result; } public function savedosen($data){ $result = new Result(); $result = $this->_storage->savedosen($data); // print_r('as');die; return $result; } public function updatepasspegawai($data, $username){ $result = new Result(); $result = $this->_storage->updatepasspegawai($data, $username); // print_r('as');die; return $result; } public function updatepassmhs($data, $username){ $result = new Result(); $result = $this->_storage->updatepassmhs($data, $username); // print_r('as');die; return $result; } public function authenticatechangeaccount($credential, $data = array(), $retriesMode = self::RETRIES_FALSE){ $result = new Result(); // print_r('die;');die; $retries = 0; /* loaded */ if ($this->id && $this->_loaded) { /* jika user aktif */ if (($this->status == self::STATUS_ACTIVE)) { if($this->password == $credential){ $authenticated = true; }else{ $authenticated = false; } if ($authenticated) { $this->retries = 'NULL'; $this->save(true); /* QA: auth success */ $result->code = $result::CODE_SUCCESS; $result->info = 'user_auth_success'; }else{ /* cek user jika gagal password sebanyak 3x */ if($retriesMode == self::RETRIES_TRUE){ if($this->retries == 'NULL'){ $ret_data = 0; }else{ $ret_data = (int) $this->retries; } if($ret_data < 3){ $this->retries = $ret_data + 1; } if((int) $this->retries == 3){ // jika sudah mencapai 3x then $this->status = self::STATUS_BLOCKED; } $this->save(true); } /* QA: fail invalid passwd */ $result->code = self::CODE_AUTH_FAILED; $result->info = 'user_auth_failed'; } }else{ /* QA: user is locked */ $result->code = self::CODE_AUTH_LOCKED; $result->info = 'user_auth_locked'; } }else{ /* QA: user not loaded */ $result->code = self::CODE_AUTH_INVALID; $result->info = 'user_auth_invalid'; } /* return result */ return $result; } }