Statistics
| Branch: | Revision:

m2u-upass-core / src / my / com / upass / services / AssignTokenService.java @ 0:02300db8682b

History | View | Annotate | Download (5.25 KB)

1
/**
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
}