LoginUser.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package cz.hsrs.servlet.security;
  2. import java.sql.SQLException;
  3. import java.util.logging.Level;
  4. import javax.servlet.http.HttpServletRequest;
  5. import cz.hsrs.db.model.NoItemFoundException;
  6. import cz.hsrs.db.pool.SQLExecutor;
  7. import cz.hsrs.db.util.UserUtil;
  8. public class LoginUser {
  9. final HttpServletRequest req;
  10. private String userName;
  11. private UserUtil util;
  12. private String userLang;
  13. private boolean audio;
  14. private int rightsId;
  15. //private int groupId;
  16. public LoginUser(HttpServletRequest request) {
  17. req = request;
  18. util = new UserUtil();
  19. }
  20. /**
  21. * Method authenticates user if given user name and password are correct
  22. * @param userName of user trying to authenticate
  23. * @param password of user trying to authenticate
  24. * @return true if user was successfully authenticate, false elsewhere
  25. */
  26. public boolean athenticate(String userName, String password) {
  27. String right_pass = getPassword(userName);
  28. if(right_pass != null){
  29. if (right_pass.equals(password)) {
  30. try {
  31. this.userName = userName;
  32. this.userLang = getLanguage();
  33. this.audio = hasAudio();
  34. this.rightsId = getRights();
  35. int sessionInserts = util.setUserSession(userName, req.getSession().getId(), req.getRemoteHost());
  36. return true;
  37. } catch (SQLException e) {
  38. //** session is already in the database - so lets do the same.
  39. SQLExecutor.logger.log(Level.SEVERE, e.getMessage(), e.getStackTrace());
  40. return true;
  41. }
  42. } else{
  43. /* password is not correct */
  44. return false;
  45. }
  46. } else {
  47. /* user wasn't found */
  48. return false;
  49. }
  50. }
  51. public boolean isAudio() {
  52. return audio;
  53. }
  54. public boolean logOut(HttpServletRequest request) {
  55. try{
  56. request.getSession().invalidate();
  57. return true;
  58. } catch (Exception e) {
  59. return false;
  60. }
  61. }
  62. public boolean isAuthenticated() {
  63. return (userName != null);
  64. }
  65. public String getUserName() {
  66. return userName;
  67. }
  68. public String getUserLanguage() {
  69. return userLang;
  70. }
  71. public int getRightsID() {
  72. return this.rightsId;
  73. }
  74. public void setUserLanguage(String newLang){
  75. if(setLanguage(newLang)==true){
  76. this.userLang = newLang;
  77. }
  78. }
  79. private boolean setLanguage(String newLang){
  80. UserUtil uUtil = new UserUtil();
  81. try {
  82. uUtil.setUserLanguage(userName, newLang);
  83. return true;
  84. } catch (SQLException e) {
  85. SQLExecutor.logger.log(Level.SEVERE, e.getMessage(), e.getStackTrace());
  86. return false;
  87. }
  88. }
  89. private int getRights() throws SQLException {
  90. try {
  91. return util.getRightsId(userName);
  92. }catch (NoItemFoundException e) {
  93. throw new SQLException(e);
  94. }
  95. }
  96. private String getLanguage() throws SQLException{
  97. try {
  98. UserUtil util = new UserUtil();
  99. return util.getUserLanguage(userName);
  100. } catch (NoItemFoundException e) {
  101. throw new SQLException(e);
  102. }
  103. }
  104. private boolean hasAudio() throws SQLException{
  105. try {
  106. UserUtil util = new UserUtil();
  107. return util.getAudio(userName);
  108. } catch (NoItemFoundException e) {
  109. throw new SQLException(e);
  110. }
  111. }
  112. protected String getPassword(String un) {
  113. try {
  114. return util.getUserPassword(un);
  115. } catch (Exception e) {
  116. SQLExecutor.logger.log(Level.SEVERE, e.getMessage(), e.getStackTrace());
  117. return null;
  118. }
  119. }
  120. }