Project

General

Profile

1
package eu.dnetlib.openaire.user.utils;
2

    
3
import eu.dnetlib.openaire.user.pojos.UserVerification;
4
import eu.dnetlib.openaire.user.dao.UserVerificationDAO;
5
import eu.dnetlib.openaire.user.store.DataSourceConnector;
6
import org.apache.log4j.Logger;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Component;
9

    
10
import java.sql.SQLException;
11
import java.sql.Timestamp;
12
import java.time.LocalDateTime;
13
import java.time.temporal.ChronoUnit;
14

    
15
/**
16
 * Created by kiatrop on 2/10/2017.
17
 */
18
@Component(value = "verificationActions")
19
public class VerificationActions {
20

    
21
    @Autowired
22
    private DataSourceConnector dataSourceConnector;
23

    
24
    private Logger logger = Logger.getLogger(VerificationActions.class);
25

    
26
    @Autowired
27
    private UserVerificationDAO userVerificationDAO;
28

    
29
    /**
30
     * Adds new row in the verification table
31
     */
32
    public void addVerificationEntry(String username, String verificationCode, Timestamp date) {
33

    
34
        try {
35
            UserVerification userVerification  = new UserVerification(username);
36
            logger.info("verificationCode: " + verificationCode);
37
            userVerification.setVerificationCode(verificationCode);
38
            userVerification.setDate(date);
39

    
40
            userVerificationDAO.insert(userVerification);
41

    
42
            logger.info("Insert user: " + username);
43

    
44
        } catch (SQLException e) {;
45
            logger.error("Fail to insert user.", e);
46
        }
47
    }
48

    
49
    /**
50
     * Updates the row of verification table with the new date for the given username
51
     */
52
    public void updateVerificationEntry(String username, String verificationCode, Timestamp date) {
53

    
54
        try {
55

    
56
            // Get userId to update user
57
            UserVerification userVerificationOld = userVerificationDAO.fetchByUsername(username);
58
            UserVerification userVerification  = new UserVerification(username);
59
            userVerification.setVerificationCode(verificationCode);
60
            userVerification.setDate(date);
61
            userVerification.setId(userVerificationOld.getId());
62

    
63
            userVerificationDAO.update(userVerification);
64

    
65
            //logger.info("Update user: " + username + " with verification code " + verificationCode);
66

    
67
        } catch (SQLException e) {
68
            logger.error("Fail to update user.", e);
69
        }
70
    }
71

    
72
    public void deleteVerificationEntry(String username) {
73

    
74
        try {
75
            UserVerification userVerification  = new UserVerification(username);
76
            userVerificationDAO.delete(userVerification);
77
            logger.info("Delete user: " + username);
78
        } catch (SQLException e) {;
79
            logger.error("Fail to delete user.", e);
80
        }
81
    }
82

    
83
    /**
84
     * Checks if the verification row exists for the given username
85
     */
86
    public boolean verificationEntryExists(String username) {
87

    
88
        try {
89
            UserVerification userVerification = userVerificationDAO.fetchByUsername(username);
90

    
91
            if (userVerification == null) {
92
                logger.info("There is no user with username: " + username);
93
                return false;
94
            }
95
            else {
96
                logger.info("User: " + username + " was found!");
97
                return true;
98
            }
99
        } catch (SQLException e) {
100
            logger.error("Fail to search user.", e);
101
        }
102
        return true;
103
    }
104

    
105
    /**
106
     * Checks if the verification row exists for the given username
107
     */
108
    public boolean verificationCodeIsCorrect(String username, String verificationCode) {
109
        
110
            try {
111
                UserVerification userVerification = userVerificationDAO.fetchByUsername(username);
112

    
113
                if (userVerification == null) {
114
                    logger.info("There is no user with username: " + username);
115
                    return false;
116
                }
117
                else {
118
                    logger.info("User: " + username + " was found!");
119

    
120
                    if (verificationCode.equals(userVerification.getVerificationCode())) {
121
                        logger.info("Verification Code is correct!");
122
                        //logger.info("... and verification code: " + verificationCode + " is correct!");
123
                        return true;
124
                    }
125
                }
126
            } catch (SQLException e) {
127
                logger.error("Fail to search user.", e);
128
            }
129
            return false;
130
    }
131

    
132
    /**
133
     * Checks if the verification code has expired
134
     * !!! Verification code expires in 24hours !!!
135
     */
136
    public boolean verificationCodeHasExpired(String username){
137

    
138
        try {
139
            UserVerification userVerification = userVerificationDAO.fetchByUsername(username);
140
            LocalDateTime date = userVerification.getDate().toLocalDateTime();
141

    
142
            long nHours = ChronoUnit.HOURS.between(date, LocalDateTime.now());
143

    
144
            if (nHours > (long)24)
145
                return true;
146
            else
147
                return false;
148

    
149
        } catch (SQLException e) {
150
            logger.error("Fail to search user.", e);
151
        }
152
        return true;
153
    }
154

    
155
    public DataSourceConnector getDataSourceConnector() {
156
        return dataSourceConnector;
157
    }
158

    
159
    public void setDataSourceConnector(DataSourceConnector dataSourceConnector) {
160
        this.dataSourceConnector = dataSourceConnector;
161
    }
162
}
(5-5/6)