Project

General

Profile

1 35007 stefania.m
package eu.dnetlib.client;
2
3
import com.google.gwt.core.client.EntryPoint;
4 35292 stefania.m
import com.google.gwt.core.client.GWT;
5
import com.google.gwt.event.logical.shared.ValueChangeEvent;
6
import com.google.gwt.event.logical.shared.ValueChangeHandler;
7
import com.google.gwt.user.client.Cookies;
8
import com.google.gwt.user.client.History;
9
import com.google.gwt.user.client.Window;
10
import com.google.gwt.user.client.rpc.AsyncCallback;
11 35007 stefania.m
import com.google.gwt.user.client.ui.RootPanel;
12 35507 stefania.m
import eu.dnetlib.goldoa.domain.Role;
13 45738 panagiotis
import eu.dnetlib.goldoa.domain.User;
14
import eu.dnetlib.goldoa.domain.UserRole;
15 35292 stefania.m
import eu.dnetlib.shared.InitLoad;
16 35007 stefania.m
17 35507 stefania.m
import java.util.ArrayList;
18
import java.util.List;
19 35007 stefania.m
20 35507 stefania.m
21 35007 stefania.m
public class GoldOAPortal implements EntryPoint {
22
23 45738 panagiotis
    public static User currentUser = null;
24 35292 stefania.m
25 36072 stefania.m
    public static String publicCaptchaKey = "";
26
27 35582 stefania.m
    public static String currentToken = "home";
28
    public static String previousToken = "home";
29
30 35507 stefania.m
    public static List<Role> userRoles = new ArrayList<>();
31
32 35292 stefania.m
    private DataServiceAsync dataService = GWT.create(DataService.class);
33
34 35007 stefania.m
    public void onModuleLoad() {
35
36 35292 stefania.m
        RootPanel.get("loginRegister").add(RegisterLoginElement.getInstance());
37 35007 stefania.m
38 35292 stefania.m
        History.addValueChangeHandler(new ValueChangeHandler<String>() {
39 35007 stefania.m
            @Override
40 35292 stefania.m
            public void onValueChange(ValueChangeEvent<String> event) {
41 35007 stefania.m
42 35292 stefania.m
                String historyToken = event.getValue();
43 35661 stefania.m
44 35292 stefania.m
                if(historyToken!=null && !historyToken.equals("")) {
45 35661 stefania.m
46 36110 stefania.m
                    String finalHistoryToken = getFinalHistoryToken(historyToken);
47 35661 stefania.m
48 36110 stefania.m
                    History.newItem(finalHistoryToken);
49
                    NavigationManager.getInstance().navigate(finalHistoryToken);
50 35661 stefania.m
51 35292 stefania.m
                } else {
52 35661 stefania.m
53 35292 stefania.m
                    //TODO kapou peftei se loop
54 35582 stefania.m
                    History.newItem("home");
55 35292 stefania.m
                    NavigationManager.getInstance().navigate("home");
56
                }
57 35007 stefania.m
            }
58 35292 stefania.m
        });
59 35007 stefania.m
60 35292 stefania.m
        String hash = Window.Location.getHash();
61
        String email = Window.Location.getParameter("email");
62
        String token = Window.Location.getParameter("token");
63
        String encryptedEmail = Cookies.getCookie("currentUser");
64
        String cookieEmail = null;
65
        if(encryptedEmail!=null)
66
            cookieEmail = Crypto.decrypt(encryptedEmail);
67 35007 stefania.m
68 46428 panagiotis
        Window.alert(hash + "/" + email +  "/" + token +  "/" + cookieEmail  );
69 46391 panagiotis
70 35292 stefania.m
        dataService.load(hash, email, token, cookieEmail, new AsyncCallback<InitLoad>() {
71 35007 stefania.m
72 35292 stefania.m
                    @Override
73
                    public void onFailure(Throwable throwable) {
74
                        //TODO system error
75 46374 panagiotis
                        Window.alert("Load error!");
76 35292 stefania.m
                    }
77 35007 stefania.m
78 35292 stefania.m
                    @Override
79
                    public void onSuccess(InitLoad initLoad) {
80 35007 stefania.m
81 36072 stefania.m
                        GoldOAPortal.publicCaptchaKey = initLoad.getPublicCaptchaKey();
82
83 35292 stefania.m
                        GoldOAPortal.currentUser = null;
84
                        Cookies.removeCookie("currentUser");
85 35507 stefania.m
                        GoldOAPortal.userRoles = initLoad.getUserRoles();
86
87 35292 stefania.m
                        if(initLoad.getPerson()!=null) {
88
89
                            //TODO if it was activate, remove parameters from url
90
91
                            GoldOAPortal.currentUser = initLoad.getPerson();
92
                            Cookies.setCookie("currentUser", Crypto.encrypt(initLoad.getPerson().getEmail()));
93
94
                            UserInfoElement userInfoElement = new UserInfoElement();
95
                            RootPanel.get("loginRegister").clear();
96
                            RootPanel.get("loginRegister").add(userInfoElement.asWidget());
97
98
                            NavigationManager.getInstance().update();
99
100 36110 stefania.m
                            String finalHistoryToken = getFinalHistoryToken(initLoad.getGoTo());
101
                            History.newItem(finalHistoryToken);
102
                            NavigationManager.getInstance().navigate(finalHistoryToken);
103
104 35292 stefania.m
                        } else {
105
106
                            if(initLoad.getErrorMessage()!=null) {
107
108
                                NavigationManager.getInstance().update();
109 36110 stefania.m
110
                                String finalHistoryToken = getFinalHistoryToken(initLoad.getGoTo());
111
                                History.newItem(finalHistoryToken);
112
                                NavigationManager.getInstance().navigate(finalHistoryToken);
113 35292 stefania.m
                                //TODO display error message
114
115
                            } else {
116
117
                                NavigationManager.getInstance().update();
118 36110 stefania.m
119
                                String finalHistoryToken = getFinalHistoryToken(initLoad.getGoTo());
120
                                History.newItem(finalHistoryToken);
121
                                NavigationManager.getInstance().navigate(finalHistoryToken);
122 35292 stefania.m
                            }
123
                        }
124
                    }
125
                });
126 35007 stefania.m
    }
127 36110 stefania.m
128
    private String getFinalHistoryToken(String historyToken) {
129
130
        if(GoldOAPortal.currentUser==null) {
131 36913 stefania.m
            if(!(historyToken.equals("home") || historyToken.equals("support") || historyToken.equals("eligibleProjects")
132 40138 stefania.m
                    || historyToken.equals("login") || historyToken.equals("register") || historyToken.equals("statistics")
133
                    || historyToken.equals("forgotYourPassword"))) {
134 36110 stefania.m
                historyToken = "home";
135
            }
136
        } else {
137
138
            boolean isModeratorOrAdmin = false;
139
            boolean isLibrarian = false;
140 36759 stefania.m
            boolean isAdminOrAccountingOfficer = false;
141 36110 stefania.m
142 45738 panagiotis
            for(UserRole personRole : GoldOAPortal.currentUser.getRoles()) {
143
                if(personRole.getPk().getRole().getId().equals("moderator") && personRole.isApproved()) {
144 36110 stefania.m
                    isModeratorOrAdmin = true;
145
                }
146 45738 panagiotis
                if(personRole.getPk().getRole().getId().equals("administrator") && personRole.isApproved()) {
147 36110 stefania.m
                    isModeratorOrAdmin = true;
148 36759 stefania.m
                    isAdminOrAccountingOfficer = true;
149 36110 stefania.m
                }
150 45738 panagiotis
                if(personRole.getPk().getRole().getId().equals("accounting") && personRole.isApproved()) {
151 36759 stefania.m
                    isAdminOrAccountingOfficer = true;
152
                }
153 45738 panagiotis
                if(personRole.getPk().getRole().getId().equals("library_staff") && personRole.isApproved()) {
154 36110 stefania.m
                    isLibrarian = true;
155
                }
156
            }
157 36467 stefania.m
158
            if(!Utils.currentUserHasRoleApproved("administrator") && historyToken.equals("monitorHelpTexts"))
159
                historyToken = "home";
160
161 36110 stefania.m
            if((!isModeratorOrAdmin && historyToken.equals("monitorFundingRequests"))
162
                    || (!isModeratorOrAdmin && historyToken.equals("monitorBudgets"))
163
                    || (!isModeratorOrAdmin && historyToken.equals("monitorUsers"))
164
                    || (!isModeratorOrAdmin && historyToken.equals("monitorUserRoles"))
165
                    || (!isModeratorOrAdmin && historyToken.equals("monitor"))) {
166
                historyToken = "home";
167
            }
168
169 36759 stefania.m
            if((!isAdminOrAccountingOfficer && historyToken.equals("accountingMonitor"))
170
                    || (!isAdminOrAccountingOfficer && historyToken.equals("accountingMonitorFundingRequests"))
171
                    || (!isAdminOrAccountingOfficer && historyToken.equals("accountingMonitorBudgets"))) {
172
                historyToken = "home";
173
            }
174
175 36110 stefania.m
            if((!isLibrarian && historyToken.equals("newBudgetRequest"))
176
                    || (!isLibrarian && historyToken.equals("existingBudgetRequests"))) {
177
                historyToken = "home";
178
            }
179
        }
180
181
        return historyToken;
182
    }
183 35007 stefania.m
}