Guest User

Untitled

a guest
Dec 2nd, 2017
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.16 KB | None | 0 0
  1. <?php
  2. require_once 'Functions.php';
  3.  
  4. $func = new Functions();
  5.  
  6. if($SERVER["REQUERST_METHOD"] == 'POST'){
  7. $data = json_decode(file_get_contents("php://input"));
  8.  
  9. if(isset($data -> operation)){
  10. $operation = $data -> operation;
  11.  
  12. if(!empty($operation)){
  13. if($operation == 'register'){
  14. if(isset($data -> user) && !empty($data -> user) && isset($data -> user -> firstname) && isset($data -> user ->lastname) && isset($data -> user -> birthday) && isset($data -> user -> gender) && isset($data -> user -> email) && isset($data -> user -> username) && isset($data -> user -> password)){
  15.  
  16. $user = $data -> user;
  17. $firstname = $user -> firstname;
  18. $lastname = $user -> lastname;
  19. $birthday = $user -> birthday;
  20. $gender = $user -> gender;
  21. $email = $user -> email;
  22. $username = $user -> username;
  23. $password = $user -> password;
  24.  
  25. if($func -> isEmailValid($email)){
  26. echo $func -> registerUser($firstname, $lastname, $gender, $birthday, $email, $username, $password);
  27. }else{
  28. echo $func -> getMsgInvalidEmail();
  29. }
  30.  
  31. }else{
  32. echo $func -> getMsgInvalidParam();
  33. }
  34. }else if($operation == 'login'){
  35. if(isset($data -> user) && !empty($data -> user) && isset($data -> user -> email) && isset($data -> user -> password)){
  36.  
  37. $user = $data -> user;
  38. $email = $user -> email;
  39. $password = $user -> password;
  40.  
  41. echo $func -> loginUser($email, $password);
  42.  
  43. }else{
  44. echo $func -> getMsgInvalidParam();
  45. }
  46. }else if($operation == 'chgPass'){
  47. if(isset($data -> user) && !empty($data -> user) && isset($data -> user -> email) && isset($data -> user -> old_password) && isset($data -> user -> new_password)){
  48.  
  49. $user = $data -> user;
  50. $email = $user -> email;
  51. $old_password = $user -> old_password;
  52. $new_password = $user -> new_password;
  53.  
  54. echo $func -> changePassword($email, $old_password, $new_password);
  55.  
  56. }else{
  57. echo $func -> getMsgInvalidParam();
  58. }
  59. }
  60. }else{
  61. echo $func -> getMsgParamNotEmpty();
  62. }
  63. }else{
  64. echo $func -> getMsgInvalidParam();
  65. }
  66.  
  67. }else if($SERVER["REQUEST_METHOD"] == "GET"){
  68. echo "Raivel Login API";
  69. }
  70.  
  71. <?php
  72.  
  73. require_once 'DBOperations.php';
  74.  
  75. class Functions{
  76.  
  77. private $db;
  78.  
  79. public function _construct(){
  80. $this -> db = new DBOperations();
  81. }
  82.  
  83. public function registerUser($firstname, $lastname, $gender, $birthday, $email, $username, $password){
  84. $db = $this -> db;
  85.  
  86. if(!empty($firstname) && !empty($lastname) && !empty($gender) && !empty($birthday) && !empty($email) && !empty($username) && !empty($password)){
  87.  
  88. if($db -> checkUserExist($email)){
  89. $response["result"] = "failure";
  90. $response["message"] = "User already registered!";
  91. return json_encode($response);
  92. }else{
  93. $result = $db -> insertData($firstname, $lastname, $gender, $birthday, $email, $username, $password);
  94.  
  95. if($result){
  96. $response["result"] = "success";
  97. $response["message"] = "User registered successfully!";
  98. return json_decode($response);
  99. }else{
  100. $response["result"] = "failure";
  101. $response["message"] = "Registration failure!";
  102. return json_decode($response);
  103. }
  104. }
  105. }else{
  106. return $this -> getMsgParamNotEmpty();
  107. }
  108.  
  109. }
  110.  
  111. public function loginUser($email, $password){
  112. $db = $this -> db;
  113.  
  114. if(!empty($email) && !empty($password)){
  115.  
  116. if($db -> checkUserExist($email)){
  117. $result = $db -> checkLogin($email, $password);
  118. if(!$result){
  119. $response["result"] = "failure";
  120. $response["message"] = "Invaild login credentials";
  121. return json_encode($response);
  122. }else{
  123. $response["result"] = "success";
  124. $response["message"] = "Login successful";
  125. $response["user"] = $result;
  126. return json_encode($response);
  127. }
  128. }else{
  129. $response["result"] = "failure";
  130. $response["message"] = "Invaild Login Credentials!";
  131. return json_encode($response);
  132. }
  133. }else{
  134. return $this -> getMsgParamNotEmpty();
  135. }
  136.  
  137. }
  138.  
  139. public function changePassword($email, $old_password, $new_password){
  140. $db = $this -> db;
  141.  
  142. if(!empty($email) && !empty($old_password) && !empty($new_password)){
  143. if(!$db -> checkLogin($email, $old_password)){
  144. $response["result"] = "failure";
  145. $response["message"] = 'Invalid old password!';
  146. return json_encode($response);
  147. }else{
  148. $result = $db -> changePassword($email, $new_password);
  149.  
  150. if($result) {
  151.  
  152. $response["result"] = "success";
  153. $response["message"] = "Password changed successfully!";
  154. return json_encode($response);
  155.  
  156. } else {
  157.  
  158. $response["result"] = "failure";
  159. $response["message"] = 'Error updating password!';
  160. return json_encode($response);
  161.  
  162. }
  163. }
  164. }else{
  165. return $this -> getMsgParamNotEmpty();
  166. }
  167. }
  168.  
  169. public function isEmailValid($email){
  170. return filter_var($email, FILTER_VALIDATE_EMAIL);
  171. }
  172.  
  173. public function getMsgParamNotEmpty(){
  174. $response["result"] = "failure";
  175. $response["message"] = "Parameters should not be empty!";
  176. return json_encode($response);
  177. }
  178.  
  179. public function getMsgInvalidEmail(){
  180. $response["result"] = "failure";
  181. $response["message"] = "Invalid email!";
  182. return json_encode($response);
  183. }
  184. }
  185.  
  186. <?php
  187.  
  188. class DBOperations{
  189.  
  190.  
  191. private $host = 'rdbms.strato.de';
  192. private $user = 'U3022262';
  193. private $db = 'DB3022262';
  194. private $pass = '6ES60bWaocWkDlK0WQQiSxYEQkknOcyQgzcm5yzHZ5t3SIzkEg6jjF9PnPvc';
  195. private $conn;
  196.  
  197.  
  198. public function _construct(){
  199. $this -> conn = new PDO("mysql:host=".$this->host.";dbname=".$this -> db, $this -> user, $this -> pass, array('charset' => 'utf8'));
  200.  
  201. $this -> conn -> query("SET CHARACTER SET utf8");
  202. }
  203.  
  204. public function insertData($firstname, $lastname, $gender, $birthday, $email, $username, $password){
  205. //$unique_id = uniqid('true', true);
  206. $hash = $this->getHash($password);
  207. $encrypted_password = $hash["encrypted"];
  208. $salt = $hash["salt"];
  209.  
  210. $sql = 'INSERT INTO users SET firstname=:firstname, lastname=:lastname, gender=:gender, birthday=:birthday, email=:email, password=:encrypted_password, salt = :salt, username=:username, joining_date = now()';
  211.  
  212. $query = $this ->conn->prepare($sql);
  213. $query -> execute(array(':firstname' => $firstname, ':lastname' => $lastname, ':gender' => $gender, ':birthday' => $birthday, ':email' => $email, ':username' => $username, ':encrypted_password' => $encrypted_password, ':salt' => $salt));
  214.  
  215. if($query){
  216. return true;
  217. }else{
  218. return false;
  219. }
  220. }
  221.  
  222. public function checkLogin($email, $password){
  223. $sql = 'SELECT * FROM users WHERE email= :email';
  224. $query = $this -> conn -> prepare($sql);
  225. $query -> execute(array(':email' => $email));
  226. $data = $query -> fetchObject();
  227. $salt = $data -> salt;
  228. $db_encrypted_password = $data -> password;
  229.  
  230. if ($this -> verifyHash($password.$salt,$db_encrypted_password) ) {
  231.  
  232. $user["username"] = $data -> name;
  233. $user["email"] = $data -> email;
  234. return $user;
  235.  
  236. } else {
  237. return false;
  238. }
  239. }
  240.  
  241. public function changePassword($email, $password){
  242.  
  243. $hash = $this -> getHash($password);
  244. $encrypted_password = $hash["encrypted"];
  245. $salt = $hash["salt"];
  246.  
  247. $sql = 'UPDATE users SET password = :encrypted_password, salt = :salt WHERE email = :email';
  248. $query = $this -> conn -> prepare($sql);
  249. $query -> execute(array(':email' => $email, ':encrypted_password' => $encrypted_password, ':salt' => $salt));
  250.  
  251. if ($query) {
  252.  
  253. return true;
  254.  
  255. } else {
  256.  
  257. return false;
  258.  
  259. }
  260. }
  261.  
  262.  
  263. public function checkUserExist($email){
  264.  
  265. $sql = 'SELECT COUNT(*) from users WHERE email =:email';
  266. $query = $this -> conn -> prepare($sql);
  267. $query -> execute(array('email' => $email));
  268.  
  269. if($query){
  270.  
  271. $row_count = $query -> fetchColumn();
  272.  
  273. if ($row_count == 0){
  274.  
  275. return false;
  276.  
  277. } else {
  278.  
  279. return true;
  280.  
  281. }
  282. } else {
  283.  
  284. return false;
  285. }
  286. }
  287.  
  288. public function getHash($password) {
  289.  
  290. $salt = sha1(rand());
  291. $salt = substr($salt, 0, 10);
  292. $encrypted = password_hash($password.$salt, PASSWORD_DEFAULT);
  293. $hash = array("salt" => $salt, "encrypted" => $encrypted);
  294.  
  295. return $hash;
  296. }
  297.  
  298. public function verifyHash($password, $hash) {
  299. return password_verify ($password, $hash);
  300. }
  301.  
  302. }
  303.  
  304. package de.novee.apps.raivel.register;
  305.  
  306. import android.content.Intent;
  307. import android.os.Bundle;
  308. import android.support.annotation.Nullable;
  309. import android.support.v7.app.AppCompatActivity;
  310. import android.support.v7.widget.Toolbar;
  311. import android.support.design.widget.Snackbar;
  312. import android.util.Log;
  313. import android.view.MenuItem;
  314. import android.view.View;
  315. import android.widget.Button;
  316. import android.widget.EditText;
  317. import android.widget.ProgressBar;
  318.  
  319. import de.novee.apps.raivel.LandingActivity;
  320. import de.novee.apps.raivel.R;
  321. import de.novee.apps.raivel.login.LoginActivity;
  322. import de.novee.apps.raivel.loginregistration.Constants;
  323. import de.novee.apps.raivel.loginregistration.RequestInterface;
  324. import de.novee.apps.raivel.models.ServerRequest;
  325. import de.novee.apps.raivel.models.ServerResponse;
  326. import de.novee.apps.raivel.models.User;
  327. import retrofit2.Call;
  328. import retrofit2.Callback;
  329. import retrofit2.Response;
  330. import retrofit2.Retrofit;
  331. import retrofit2.converter.gson.GsonConverterFactory;
  332.  
  333. public class RegisterSecondActivity extends AppCompatActivity {
  334.  
  335. Intent i;
  336.  
  337. View myView;
  338.  
  339. String firstname;
  340. String lastname;
  341. String birthday;
  342. String gender;
  343. String email;
  344. String username;
  345. String password;
  346. String password_repeat;
  347.  
  348. private EditText et_email;
  349. private EditText et_username;
  350. private EditText et_password;
  351. private EditText et_password_repeat;
  352. private ProgressBar progress;
  353.  
  354. @Override
  355. protected void onCreate(@Nullable Bundle savedInstanceState) {
  356. super.onCreate(savedInstanceState);
  357. setContentView(R.layout.activity_register_second);
  358.  
  359. myView = findViewById(android.R.id.content);
  360.  
  361. i = getIntent();
  362. firstname = i.getExtras().getString("firstname");
  363. lastname = i.getExtras().getString("lastname");
  364. birthday = i.getExtras().getString("birthday");
  365. gender = i.getExtras().getString("gender");
  366.  
  367.  
  368. overridePendingTransition(0, 0);
  369.  
  370. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_register_second);
  371. setSupportActionBar(toolbar);
  372. getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  373. getSupportActionBar().setDisplayShowHomeEnabled(true);
  374. getSupportActionBar().setTitle("Registrierung");
  375. toolbar.setTitleTextColor(getResources().getColor(R.color.color_white));
  376.  
  377. initViews(myView);
  378.  
  379. setupRegisterUser();
  380. setupGoToLoginButton();
  381. }
  382.  
  383. private void initViews(View view){
  384. et_email = (EditText) findViewById(R.id.et_email);
  385. et_username = (EditText) findViewById(R.id.et_username);
  386. et_password = (EditText) findViewById(R.id.et_password);
  387. et_password_repeat = (EditText) findViewById(R.id.et_password_repeat);
  388.  
  389. progress = (ProgressBar)view.findViewById(R.id.progress);
  390. }
  391.  
  392.  
  393. @Override
  394. public boolean onOptionsItemSelected(MenuItem item) {
  395.  
  396. if(item.getItemId() == android.R.id.home){
  397. startActivity(new Intent(RegisterSecondActivity.this, RegisterFirstActivity.class));
  398. }
  399.  
  400. return super.onOptionsItemSelected(item);
  401. }
  402.  
  403. private void setupRegisterUser(){
  404. Button btn_registerUser = (Button) findViewById(R.id.btn_register_final);
  405. btn_registerUser.setOnClickListener(new View.OnClickListener() {
  406. @Override
  407. public void onClick(View view) {
  408. email = et_email.getText().toString();
  409. username = et_username.getText().toString();
  410. password = et_password.getText().toString();
  411. password_repeat = et_password_repeat.getText().toString();
  412.  
  413. if(!firstname.isEmpty() && !lastname.isEmpty() && !birthday.isEmpty() && !gender.isEmpty() && !email.isEmpty() &&
  414. !username.isEmpty() && !password.isEmpty() && !password_repeat.isEmpty()){
  415.  
  416. if(password.equals(password_repeat)){
  417. progress.setVisibility(View.VISIBLE);
  418. registerProcess(firstname,lastname,birthday,gender,email,username,password);
  419. }else{
  420. Snackbar.make(myView, "Passwörter müssen gleich sein!", Snackbar.LENGTH_LONG).show();
  421. }
  422.  
  423. }else{
  424. Snackbar.make(view, "Felder dürfen nicht leer sein!", Snackbar.LENGTH_LONG).show();
  425. }
  426. }
  427. });
  428. }
  429.  
  430. private void setupGoToLoginButton(){
  431. Button gotoLoginButton = (Button) findViewById(R.id.btn_gotologin);
  432. gotoLoginButton.setOnClickListener(new View.OnClickListener() {
  433. @Override
  434. public void onClick(View view) {
  435.  
  436. startActivity(new Intent(RegisterSecondActivity.this, LoginActivity.class));
  437. }
  438. });
  439. }
  440.  
  441. private void registerProcess(String firstname, String lastname, String birthday, String gender, String email, String username, String password){
  442. Retrofit retrofit = new Retrofit.Builder()
  443. .baseUrl(Constants.BASE_URL)
  444. .addConverterFactory(GsonConverterFactory.create())
  445. .build();
  446.  
  447. RequestInterface requestInterface = retrofit.create(RequestInterface.class);
  448.  
  449. User user = new User();
  450. user.setFirstname(firstname);
  451. user.setLastname(lastname);
  452. user.setBirthday(birthday);
  453. user.setGender(gender);
  454. user.setEmail(email);
  455. user.setUsername(username);
  456. user.setPassword(password);
  457.  
  458. ServerRequest request = new ServerRequest();
  459. request.setOperation(Constants.REGISTER_OPERATION);
  460. request.setUser(user);
  461.  
  462. Call<ServerResponse> response = requestInterface.operation(request);
  463.  
  464. response.enqueue(new Callback<ServerResponse>(){
  465. @Override
  466. public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {
  467. ServerResponse resp = response.body();
  468. Snackbar.make(myView, resp.getMessage(), Snackbar.LENGTH_LONG).show();
  469. progress.setVisibility(View.INVISIBLE);
  470. }
  471.  
  472. @Override
  473. public void onFailure(Call<ServerResponse> call, Throwable t) {
  474. progress.setVisibility(View.INVISIBLE);
  475. Log.d(Constants.TAG,t.getLocalizedMessage());
  476. Snackbar.make(myView, t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();
  477. }
  478. });
  479.  
  480. }
  481.  
  482. }
  483.  
  484. package de.novee.apps.raivel.models;
  485.  
  486.  
  487. public class ServerRequest {
  488.  
  489. private String operation;
  490. private User user;
  491.  
  492. public void setOperation(String operation) {
  493. this.operation = operation;
  494. }
  495.  
  496. public void setUser(User user) {
  497. this.user = user;
  498. }
  499.  
  500. }
  501.  
  502. package de.novee.apps.raivel.models;
  503.  
  504. public class ServerResponse {
  505.  
  506. private String result;
  507. private String message;
  508. private User user;
  509.  
  510. public String getResult() {
  511. return result;
  512. }
  513.  
  514. public String getMessage() {
  515. return message;
  516. }
  517.  
  518. public User getUser() {
  519. return user;
  520. }
  521.  
  522. }
  523.  
  524. package de.novee.apps.raivel.loginregistration;
  525.  
  526.  
  527. import de.novee.apps.raivel.models.ServerRequest;
  528. import de.novee.apps.raivel.models.ServerResponse;
  529.  
  530. import retrofit2.Call;
  531. import retrofit2.http.Body;
  532. import retrofit2.http.POST;
  533.  
  534. public interface RequestInterface {
  535. @POST("apps/raivel/android_api/")
  536. Call<ServerResponse> operation(@Body ServerRequest request);
  537. }
  538.  
  539. package de.novee.apps.raivel.models;
  540.  
  541. public class User {
  542.  
  543. private String firstname;
  544. private String lastname;
  545. private String gender;
  546. private String birthday;
  547. private String email;
  548. private String username;
  549. private String password;
  550. private String oldPassword;
  551. private String newPassword;
  552.  
  553. public String getFirstname() {
  554. return firstname;
  555. }
  556.  
  557. public void setFirstname(String firstname) {
  558. this.firstname = firstname;
  559. }
  560.  
  561. public String getLastname() {
  562. return lastname;
  563. }
  564.  
  565. public void setLastname(String lastname) {
  566. this.lastname = lastname;
  567. }
  568.  
  569. public String getGender() {
  570. return gender;
  571. }
  572.  
  573. public void setGender(String gender) {
  574. this.gender = gender;
  575. }
  576.  
  577. public String getBirthday() {
  578. return birthday;
  579. }
  580.  
  581. public void setBirthday(String birthday) {
  582. this.birthday = birthday;
  583. }
  584.  
  585. public String getEmail() {
  586. return email;
  587. }
  588.  
  589. public void setEmail(String email) {
  590. this.email = email;
  591. }
  592.  
  593. public String getUsername() {
  594. return username;
  595. }
  596.  
  597. public void setUsername(String username) {
  598. this.username = username;
  599. }
  600.  
  601. public String getPassword() {
  602. return password;
  603. }
  604.  
  605. public void setPassword(String password) {
  606. this.password = password;
  607. }
  608.  
  609. public String getOldPassword() {
  610. return oldPassword;
  611. }
  612.  
  613. public void setOldPassword(String oldPassword) {
  614. this.oldPassword = oldPassword;
  615. }
  616.  
  617. public String getNewPassword() {
  618. return newPassword;
  619. }
  620.  
  621. public void setNewPassword(String newPassword) {
  622. this.newPassword = newPassword;
  623. }
  624. }
Add Comment
Please, Sign In to add comment