cmd_logout.cpp 812 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include "cmd_logout.h"
  2. #ifdef DEBUG
  3. #include <iostream>
  4. using std::cout;
  5. using std::endl;
  6. #endif
  7. cmd_logout::cmd_logout()
  8. {
  9. }
  10. cmd_logout::~cmd_logout()
  11. {
  12. }
  13. command_type cmd_logout::get_command()
  14. {
  15. return command_type::LOGOUT_CMD;
  16. }
  17. response cmd_logout::perform(request *req)
  18. {
  19. unsigned long key;
  20. memset(&res, 0, sizeof res);
  21. res.type = get_command();
  22. if (user_exists(string(req->request_u.logout.username)) == false) {
  23. res.response_u.active.response = status::INVALID_USER;
  24. return res;
  25. }
  26. key = get_user_key(req->request_u.logout.username);
  27. if (key != req->request_u.logout.session_key) {
  28. res.response_u.active.response = status::INVALID_SESSION_KEY;
  29. return res;
  30. }
  31. remove_user(req->request_u.logout.username, key);
  32. res.response_u.active.response = status::VALID;
  33. return res;
  34. }