m2u-upass-core / src / my / com / upass / services / AssignTokenService.java @ 0:02300db8682b
History | View | Annotate | Download (5.25 KB)
1 | 0:02300db8682b | hadi | /**
|
---|---|---|---|
2 | * Copyright (c) 2010 Penril Datability (M) Sdn Bhd All rights reserved.
|
||
3 | *
|
||
4 | * This software is copyrighted. Under the copyright laws, this software
|
||
5 | * may not be copied, in whole or in part, without prior written consent
|
||
6 | * of Penril Datability (M) Sdn Bhd or its assignees. This software is
|
||
7 | * provided under the terms of a license between Penril Datability (M)
|
||
8 | * Sdn Bhd and the recipient, and its use is subject to the terms of that
|
||
9 | * license.
|
||
10 | */
|
||
11 | package my.com.upass.services; |
||
12 | |||
13 | import java.util.Date; |
||
14 | |||
15 | import my.com.upass.Constants; |
||
16 | import my.com.upass.dao.DAOFactoryProvider; |
||
17 | import my.com.upass.dao.UserDAO; |
||
18 | import my.com.upass.dao.UserTokenDAO; |
||
19 | import my.com.upass.factory.UPassFactory; |
||
20 | import my.com.upass.pojo.UserBean; |
||
21 | import my.com.upass.pojo.UserTokenBean; |
||
22 | import my.com.upass.secure.metric.SecureMetricTokenControllerImpl; |
||
23 | import my.com.upass.vasco.TokenController; |
||
24 | |||
25 | /**
|
||
26 | * PROGRAMMER: Danniell
|
||
27 | * CHANGE-NO:
|
||
28 | * TASK-NO:
|
||
29 | * DATE CREATED: Dec 28, 2011
|
||
30 | * TAG AS:
|
||
31 | * REASON(S):
|
||
32 | * MODIFICATION:
|
||
33 | */
|
||
34 | |||
35 | /**
|
||
36 | * <Class description>
|
||
37 | */
|
||
38 | public class AssignTokenService |
||
39 | { |
||
40 | public int assignToken(String serialNumber, String userAlias, int TargetTokenAssignmentState) |
||
41 | { |
||
42 | int rc = Constants.ERR_SYSTEM_NOT_READY;
|
||
43 | |||
44 | try
|
||
45 | { |
||
46 | UserTokenDAO tokenDao = DAOFactoryProvider.getDAOFactory ().getUserTokenDAO (UPassFactory.getTokenMode ()); |
||
47 | UserTokenBean tb = new UserTokenBean();
|
||
48 | String targetUserAlias = null; |
||
49 | |||
50 | switch (UPassFactory.getTokenMode ())
|
||
51 | { |
||
52 | case GEMALTO:
|
||
53 | case VASCO:
|
||
54 | if (TargetTokenAssignmentState == Constants.TKN_STATE_ASSIGNED)
|
||
55 | { |
||
56 | // if the operation is to assign token to user, query by token serial number
|
||
57 | // then assign token to user
|
||
58 | tb = tokenDao.getTokenFromStoreBySerialNumber(serialNumber); |
||
59 | targetUserAlias = userAlias; |
||
60 | } |
||
61 | else
|
||
62 | { |
||
63 | // query by user ID, since it already assigned
|
||
64 | // then return token back to TokenOwner
|
||
65 | tb = tokenDao.getTokenFromStoreByUserAlias(userAlias); |
||
66 | targetUserAlias = "TokenOwner";
|
||
67 | } |
||
68 | |||
69 | if (tb == null) |
||
70 | { |
||
71 | return Constants.ERR_TOKEN_NOT_EXIST;
|
||
72 | } |
||
73 | |||
74 | // check if the token already assigned and the target state is assignToken
|
||
75 | if (TargetTokenAssignmentState == Constants.TKN_STATE_ASSIGNED &
|
||
76 | tb.getVstate() == Constants.TKN_STATE_ASSIGNED) |
||
77 | { |
||
78 | return Constants.ERR_TOKEN_ALREADY_ASSIGNED;
|
||
79 | } |
||
80 | |||
81 | // check user exist for the token
|
||
82 | UserDAO userDao = DAOFactoryProvider.getDAOFactory ().getUserDAO (); |
||
83 | UserBean ub; |
||
84 | ub = userDao.getUserFromStore(targetUserAlias); |
||
85 | |||
86 | if (ub==null) |
||
87 | { |
||
88 | return Constants.ERR_USERALIAS_NOT_FOUND;
|
||
89 | } |
||
90 | |||
91 | // reset and assign token to user
|
||
92 | TokenController tc = UPassFactory.getTokenController(tb); |
||
93 | rc = tc.resetToken(); |
||
94 | |||
95 | tb = (UserTokenBean) tc.getUpdatedObject(); |
||
96 | tb.setVstate(TargetTokenAssignmentState); |
||
97 | tb.setVdateAssigned( new Date()); |
||
98 | tb.setVuserID(ub.getUserID()); |
||
99 | tb.setVdateFirstUsed(null);
|
||
100 | tb.setVdateLastUsed(null);
|
||
101 | |||
102 | // update database
|
||
103 | boolean lrc = tokenDao.updateTokenToStore(tb);
|
||
104 | if (!lrc)
|
||
105 | { |
||
106 | return Constants.ERR_UNKNOWN;
|
||
107 | } |
||
108 | |||
109 | break;
|
||
110 | case SECUREMETRIC:
|
||
111 | |||
112 | //TODO create TokenController Interface
|
||
113 | SecureMetricTokenControllerImpl impl = new SecureMetricTokenControllerImpl(tb);
|
||
114 | |||
115 | UserTokenBean token = new UserTokenBean();
|
||
116 | |||
117 | switch (TargetTokenAssignmentState){
|
||
118 | |||
119 | case Constants.TKN_STATE_ASSIGNED:
|
||
120 | |||
121 | token = impl.getUserTokenByToken(serialNumber); |
||
122 | |||
123 | if (null != token.getVserialNumber()) |
||
124 | { |
||
125 | return Constants.ERR_TOKEN_ALREADY_ASSIGNED;
|
||
126 | } |
||
127 | |||
128 | |||
129 | /*
|
||
130 | * Check Lock Token Status
|
||
131 | * if the status is lock set to unlock before assign
|
||
132 | */
|
||
133 | |||
134 | rc = impl.getTokenLocked(serialNumber); |
||
135 | |||
136 | if (Constants.ERR_INVALID_CREDENTIAL == rc){
|
||
137 | |||
138 | impl.setTokenLocked(serialNumber, 0);
|
||
139 | } |
||
140 | |||
141 | rc =impl.assignToken(serialNumber, userAlias, 1);
|
||
142 | |||
143 | if (rc != Constants.ERR_SUCCESS)
|
||
144 | { |
||
145 | impl.deleteUser(userAlias); |
||
146 | if (Constants.OTPR_CORE_DB_TOKEN_NOTEXISTS == rc){
|
||
147 | return Constants.ERR_TOKEN_NOT_EXIST;
|
||
148 | |||
149 | }else if (Constants.OTPR_CORE_TOKEN_BINDED == rc ){ |
||
150 | return Constants.ERR_TOKEN_ALREADY_ASSIGNED;
|
||
151 | |||
152 | }else{
|
||
153 | return Constants.ERR_UNKNOWN;
|
||
154 | } |
||
155 | } |
||
156 | |||
157 | break;
|
||
158 | |||
159 | case Constants.TKN_STATE_UNASSIGNED:
|
||
160 | |||
161 | token = impl.getUserTokenByUserId(userAlias); |
||
162 | |||
163 | rc =impl.unassignToken(userAlias, token.getVserialNumber()); |
||
164 | |||
165 | if (rc != Constants.ERR_SUCCESS){
|
||
166 | |||
167 | return Constants.ERR_UNKNOWN;
|
||
168 | } |
||
169 | |||
170 | rc = impl.deleteUser(userAlias); |
||
171 | |||
172 | if (rc != Constants.ERR_SUCCESS){
|
||
173 | |||
174 | return Constants.ERR_UNKNOWN;
|
||
175 | } |
||
176 | |||
177 | break;
|
||
178 | default:
|
||
179 | break;
|
||
180 | } |
||
181 | default:
|
||
182 | break;
|
||
183 | } |
||
184 | |||
185 | } |
||
186 | catch(Exception e) |
||
187 | { |
||
188 | e.printStackTrace (); |
||
189 | return rc;
|
||
190 | } |
||
191 | |||
192 | return Constants.ERR_SUCCESS;
|
||
193 | |||
194 | } |
||
195 | } |