Implements OIC/OCF resource models for cloud.
[platform/upstream/iotivity.git] / cloud / account / src / main / java / org / iotivity / cloud / accountserver / token / TokenManager.java
1 /*
2  * //******************************************************************
3  * //
4  * // Copyright 2016 Samsung Electronics All Rights Reserved.
5  * //
6  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
7  * //
8  * // Licensed under the Apache License, Version 2.0 (the "License");
9  * // you may not use this file except in compliance with the License.
10  * // You may obtain a copy of the License at
11  * //
12  * //      http://www.apache.org/licenses/LICENSE-2.0
13  * //
14  * // Unless required by applicable law or agreed to in writing, software
15  * // distributed under the License is distributed on an "AS IS" BASIS,
16  * // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * // See the License for the specific language governing permissions and
18  * // limitations under the License.
19  * //
20  * //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
21  */
22 package org.iotivity.cloud.accountserver.token;
23
24 import org.iotivity.cloud.accountserver.db.AccountDBManager;
25 import org.iotivity.cloud.util.Logger;
26
27 public class TokenManager {
28
29     private TokenGenerator tokenGenerator;
30     private TokenValidator tokenValidator;
31
32     public TokenManager() {
33         tokenGenerator = new TokenGenerator();
34         tokenValidator = new TokenValidator();
35     }
36
37     public Token generateToken() {
38
39         String accessToken = tokenGenerator.generateAccessToken();
40         String refreshToken = tokenGenerator.generateRefreshToken();
41
42         Token token = new Token();
43         token.setToken(accessToken, refreshToken);
44
45         return token;
46     }
47
48     public Boolean verifyAccessToken(String token) {
49
50         return tokenValidator.verifyAccessToken(token);
51     }
52
53     public Boolean verifyRefreshToken(String token) {
54
55         return tokenValidator.verifyRefreshToken(token);
56     }
57
58     public long getRemainExpiredTime(String token) {
59
60         return tokenValidator.getRemainedSeconds(token);
61     }
62
63     public Token refreshToken(String token) {
64
65         String userId = null;
66
67         Token refreshedToken = new Token();
68
69         Boolean verifyRefreshToken = false;
70         verifyRefreshToken = tokenValidator.verifyRefreshToken(token);
71
72         if (!verifyRefreshToken) {
73             Logger.w("RefreshToken is not existed!");
74             return null;
75         }
76
77         refreshedToken = generateToken();
78
79         userId = AccountDBManager.getInstance().getUserIdByRefreshToken(token);
80
81         AccountDBManager.getInstance().updateUserToken(userId, token,
82                 refreshedToken.getAccessToken(),
83                 refreshedToken.getRefreshToken());
84
85         return refreshedToken;
86     }
87
88 }