PageRenderTime 24ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/application/models/ModelLogin.php

https://bitbucket.org/nando123/iamperform
PHP | 163 lines | 127 code | 30 blank | 6 comment | 18 complexity | f532ed59012dd005641570602240441f MD5 | raw file
  1. <?php
  2. class ModelLogin extends CI_Model {
  3. function createUser($data){
  4. $this->db->trans_start();
  5. $this->db->trans_strict(FALSE);
  6. list($name,$username,$licence_code,$device_id,$device_name,$password,$provinsi,$birth,$gender,$email) = $data;
  7. $sql = "SELECT username from users WHERE username = '$username'";
  8. $result = $this->db->query($sql);
  9. if ($result->num_rows() > 0) {
  10. return "user_exist";
  11. }
  12. $sql = "SELECT license_code from users WHERE license_code = '$licence_code'";
  13. $query = $this->db->query($sql);
  14. if ($query->num_rows() > 0) {
  15. return "licence_exist";
  16. }
  17. $sql = "SELECT master_licence_code from master_licence WHERE master_licence_code = '$licence_code' and master_licence_is_activate = '2'";
  18. $query = $this->db->query($sql);
  19. if ($query->num_rows() > 0) {
  20. return "licence_suspen";
  21. }
  22. $result = "SELECT master_licence_code from master_licence WHERE master_licence_code = '$licence_code'";
  23. $no_of_rows = $this->db->query($result);
  24. if ($no_of_rows->num_rows() == 0) {
  25. return "licence_not";
  26. }
  27. $password_md5 = md5($password);
  28. $uuid = uniqid('', true);
  29. $hash = $this->hashSSHA($password);
  30. $encrypted_password = $hash["encrypted"]; // encrypted password
  31. $salt = $hash["salt"]; // salt
  32. $birthDttm = date("Y-m-d", strtotime($birth));
  33. $sql = "SELECT master_licence_type, master_licence_user_groupcode, master_licence_group FROM master_licence WHERE master_licence_code = '$licence_code'";
  34. $query = $this->db->query($sql);
  35. if($query->num_rows()>0){
  36. $key = $query->row();
  37. $master_licence_type = $key->master_licence_type;
  38. $master_licence_user_groupcode = $key->master_licence_user_groupcode;
  39. $groupcode = $key->master_licence_group;
  40. }
  41. if($master_licence_user_groupcode == 'ALL'){
  42. $sql_alias = "INSERT INTO user_access_alias(username,role_id,role_type) VALUES ('$username','RL_ALL_ACCESS','ALL')";
  43. $this->db->query($sql_alias);
  44. }
  45. if($master_licence_user_groupcode == 'HPD' OR $master_licence_user_groupcode == 'KSC' OR $master_licence_user_groupcode == "SCH"){
  46. $sql_alias = "INSERT INTO user_access_alias(username,role_id,role_type) VALUES ('$username','$master_licence_type','$master_licence_user_groupcode')";
  47. $sql_group_sc = "INSERT INTO master_group_sc(username,groupcode) VALUES ('$username','$groupcode')";
  48. $this->db->query($sql_alias);
  49. $this->db->query($sql_group_sc);
  50. }
  51. $sql_update = "UPDATE master_licence SET master_licence_is_activate = '1' WHERE master_licence_code = '$licence_code'";
  52. $insert_user_data = "INSERT INTO users(unique_id, name, username, encrypted_password, salt, created_at,updated_at,license_code,"
  53. . " registered_device_id,registered_device_name,gambar,login_device_id,login_device_name, role_id, role_type) VALUES "
  54. . " ('$uuid', '$name', '$username', '$encrypted_password', '$salt', NOW(),NOW(),'$licence_code','$device_id',"
  55. . " '$device_id','http://portal.iamprima.com/assets/pictures/9731481551200.jpg',"
  56. . "'$device_id','$device_id','$master_licence_type','$master_licence_user_groupcode')";
  57. $insert_personal_data = "INSERT INTO master_information_personal (master_atlet_username,master_atlet_email, master_atlet_tanggal_lahir, master_atlet_jenis_kelamin, provinsi_id)
  58. VALUES ('$username', '$email', '$birthDttm', '$gender', '$provinsi')";
  59. $this->db->query($sql_update);
  60. $this->db->query($insert_user_data);
  61. $this->db->query($insert_personal_data);
  62. $this->db->trans_complete(); # Completing transaction
  63. /*Optional*/
  64. if ($this->db->trans_status() === FALSE) {
  65. # Something went wrong.
  66. $this->db->trans_rollback();
  67. return "regist_failed";
  68. }
  69. else {
  70. # Everything is Perfect.
  71. # Committing data to the database.
  72. $this->db->trans_commit();
  73. return "regist_success";
  74. }
  75. }
  76. function doLoginMobile($username)
  77. {
  78. $query = $this->db->query("SELECT a.*,b.* FROM v_users as a"
  79. . " LEFT JOIN master_role as b on b.role_id = a.role_id"
  80. . " WHERE a.username = '$username'");
  81. if($query->num_rows() > 0){
  82. $row = $query->row();
  83. $salt = $row->salt;
  84. $enc_p = $row->encrypted_password;
  85. $code = $row->license_code;
  86. $result = $query->result();
  87. $arrResult = array("success",$result);
  88. }
  89. else
  90. {
  91. $arrResult = array("not_registered",false);
  92. }
  93. return $arrResult;
  94. }
  95. function doLogin($username,$password)
  96. {
  97. $query = $this->db->query("SELECT a.*,b.* FROM v_users as a"
  98. . " LEFT JOIN master_role as b on b.role_id = a.role_id"
  99. . " WHERE a.username = '$username'");
  100. if($query->num_rows() > 0){
  101. $row = $query->row();
  102. $salt = $row->salt;
  103. $enc_p = $row->encrypted_password;
  104. $code = $row->license_code;
  105. $hash = $this->checkhashSSHA($salt, $password);
  106. // var_dump($enc_p);
  107. // var_dump($hash);
  108. if ($enc_p == $hash) {
  109. $result = $query->result();
  110. $arrResult = array("success",$result);
  111. }else{
  112. $arrResult = array("wrong_password",false);
  113. }
  114. }
  115. else
  116. {
  117. $arrResult = array("not_registered",false);
  118. }
  119. return $arrResult;
  120. }
  121. function checkhashSSHA($salt, $password) {
  122. $hash = base64_encode(sha1($password . $salt, true) . $salt);
  123. return $hash;
  124. }
  125. function hashSSHA($password) {
  126. $salt = sha1(rand());
  127. $salt = substr($salt, 0, 10);
  128. $encrypted = base64_encode(sha1($password . $salt, true) . $salt);
  129. $hash = array("salt" => $salt, "encrypted" => $encrypted);
  130. return $hash;
  131. }
  132. }
  133. ?>