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 35292 stefania.m
import eu.dnetlib.goldoa.domain.Person;
13 35661 stefania.m
import eu.dnetlib.goldoa.domain.PersonRole;
14 35507 stefania.m
import eu.dnetlib.goldoa.domain.Role;
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 35292 stefania.m
    public static Person currentUser = null;
24
25 35582 stefania.m
    public static String currentToken = "home";
26
    public static String previousToken = "home";
27
28 35507 stefania.m
    public static List<Role> userRoles = new ArrayList<>();
29
30 35292 stefania.m
    private DataServiceAsync dataService = GWT.create(DataService.class);
31
32 35007 stefania.m
    public void onModuleLoad() {
33
34 35292 stefania.m
        RootPanel.get("loginRegister").add(RegisterLoginElement.getInstance());
35 35007 stefania.m
36 35292 stefania.m
        History.addValueChangeHandler(new ValueChangeHandler<String>() {
37 35007 stefania.m
            @Override
38 35292 stefania.m
            public void onValueChange(ValueChangeEvent<String> event) {
39 35007 stefania.m
40 35292 stefania.m
                String historyToken = event.getValue();
41 35661 stefania.m
42 35292 stefania.m
                if(historyToken!=null && !historyToken.equals("")) {
43 35661 stefania.m
44
                    if(GoldOAPortal.currentUser==null) {
45
                        if(!(historyToken.equals("home") || historyToken.equals("help") || historyToken.equals("login") || historyToken.equals("register"))) {
46
                            historyToken = "home";
47
                        }
48
                    } else {
49
50
                        boolean isModeratorOrAdmin = false;
51
                        for(PersonRole personRole : GoldOAPortal.currentUser.getRoles()) {
52
                            if(personRole.getRole().getId().equals("moderator") && personRole.isApproved()) {
53
                                isModeratorOrAdmin = true;
54
                            }
55
                            if(personRole.getRole().getId().equals("administrator") && personRole.isApproved()) {
56
                                isModeratorOrAdmin = true;
57
                            }
58
                        }
59 35933 stefania.m
                        if((!isModeratorOrAdmin && historyToken.equals("monitorFundingRequests"))
60
                                || (!isModeratorOrAdmin && historyToken.equals("monitorBudgets"))) {
61 35661 stefania.m
                            historyToken = "home";
62
                        }
63
                    }
64
65 35582 stefania.m
                    History.newItem(historyToken);
66 35292 stefania.m
                    NavigationManager.getInstance().navigate(historyToken);
67 35661 stefania.m
68 35292 stefania.m
                } else {
69 35661 stefania.m
70 35292 stefania.m
                    //TODO kapou peftei se loop
71 35582 stefania.m
                    History.newItem("home");
72 35292 stefania.m
                    NavigationManager.getInstance().navigate("home");
73
                }
74 35007 stefania.m
            }
75 35292 stefania.m
        });
76 35007 stefania.m
77 35292 stefania.m
        String hash = Window.Location.getHash();
78
        String email = Window.Location.getParameter("email");
79
        String token = Window.Location.getParameter("token");
80
        String encryptedEmail = Cookies.getCookie("currentUser");
81
        String cookieEmail = null;
82
        if(encryptedEmail!=null)
83
            cookieEmail = Crypto.decrypt(encryptedEmail);
84 35007 stefania.m
85 35292 stefania.m
        dataService.load(hash, email, token, cookieEmail, new AsyncCallback<InitLoad>() {
86 35007 stefania.m
87 35292 stefania.m
                    @Override
88
                    public void onFailure(Throwable throwable) {
89
                        //TODO system error
90
                    }
91 35007 stefania.m
92 35292 stefania.m
                    @Override
93
                    public void onSuccess(InitLoad initLoad) {
94 35007 stefania.m
95 35292 stefania.m
                        GoldOAPortal.currentUser = null;
96
                        Cookies.removeCookie("currentUser");
97
98 35507 stefania.m
                        GoldOAPortal.userRoles = initLoad.getUserRoles();
99
100 35292 stefania.m
                        if(initLoad.getPerson()!=null) {
101
102
                            //TODO if it was activate, remove parameters from url
103
104
                            GoldOAPortal.currentUser = initLoad.getPerson();
105
                            Cookies.setCookie("currentUser", Crypto.encrypt(initLoad.getPerson().getEmail()));
106
107
                            UserInfoElement userInfoElement = new UserInfoElement();
108
                            RootPanel.get("loginRegister").clear();
109
                            RootPanel.get("loginRegister").add(userInfoElement.asWidget());
110
111
                            NavigationManager.getInstance().update();
112 35582 stefania.m
                            History.newItem(initLoad.getGoTo());
113 35630 stefania.m
                            NavigationManager.getInstance().navigate(initLoad.getGoTo());
114 35292 stefania.m
115
                        } else {
116
117
                            if(initLoad.getErrorMessage()!=null) {
118
119
                                NavigationManager.getInstance().update();
120 35582 stefania.m
                                History.newItem(initLoad.getGoTo());
121 35630 stefania.m
                                NavigationManager.getInstance().navigate(initLoad.getGoTo());
122 35292 stefania.m
                                //TODO display error message
123
124
                            } else {
125
126
                                NavigationManager.getInstance().update();
127 35582 stefania.m
                                History.newItem(initLoad.getGoTo());
128 35630 stefania.m
                                NavigationManager.getInstance().navigate(initLoad.getGoTo());
129 35292 stefania.m
                            }
130
                        }
131
                    }
132
                });
133 35007 stefania.m
    }
134
}