Project

General

Profile

« Previous | Next » 

Revision 49196

Basic servlet status for username reminder and password reset

View differences:

modules/dnet-openaire-users/trunk/src/main/java/eu/dnetlib/openaire/usermanagement/VerificationCodeServlet.java
1
package eu.dnetlib.openaire.usermanagement;
2

  
3
import eu.dnetlib.openaire.user.utils.VerificationActions;
4
import org.springframework.beans.factory.annotation.Autowired;
5
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
6

  
7
import javax.servlet.ServletConfig;
8
import javax.servlet.ServletException;
9
import javax.servlet.http.HttpServlet;
10
import javax.servlet.http.HttpServletRequest;
11
import javax.servlet.http.HttpServletResponse;
12
import java.io.IOException;
13
import java.io.PrintWriter;
14

  
15
/**
16
 * Created by kiatrop on 28/9/2017.
17
 */
18
public class VerificationCodeServlet extends HttpServlet {
19

  
20
    public void init(ServletConfig config) throws ServletException {
21
        super.init(config);
22
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
23
                config.getServletContext());
24
    }
25

  
26
    @Autowired
27
    private VerificationActions verificationActions;
28

  
29
    @Override
30
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
31
        response.setContentType("text/html");
32
        PrintWriter printWriter = response.getWriter();
33

  
34
        String formUsername = (String)request.getAttribute("username");
35
        String formVerificationCode = (String)request.getAttribute("verification_code");
36

  
37
        if (verificationActions.verificationEntryExists(formUsername, formVerificationCode)) {
38
            response.sendRedirect("./resetPassword.jsp");
39

  
40
        } else {
41
            response.sendRedirect("./error.jsp");
42
        }
43

  
44
        response.sendRedirect("./resetPassword.jsp");
45
        printWriter.close();
46
    }
47
}
modules/dnet-openaire-users/trunk/src/main/java/eu/dnetlib/openaire/usermanagement/RemindUsernameServlet.java
1
package eu.dnetlib.openaire.usermanagement;
2

  
3
import com.unboundid.ldap.sdk.LDAPException;
4
import eu.dnetlib.openaire.user.utils.EmailActions;
5
import eu.dnetlib.openaire.user.utils.LDAPActions;
6
import org.apache.log4j.Logger;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Component;
9
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
10

  
11
import javax.servlet.ServletConfig;
12
import javax.servlet.ServletException;
13
import javax.servlet.http.HttpServlet;
14
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletResponse;
16
import java.io.IOException;
17

  
18
/**
19
 * Created by kiatrop on 2/10/2017.
20
 */
21
@Component
22
public class RemindUsernameServlet extends HttpServlet {
23

  
24
    public void init(ServletConfig config) throws ServletException {
25
        super.init(config);
26
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
27
                config.getServletContext());
28
    }
29

  
30
    @Autowired
31
    private LDAPActions ldapActions;
32

  
33
    private EmailActions emailActions;
34

  
35
    private Logger logger = Logger.getLogger(RemindUsernameServlet.class);
36

  
37
    @Override
38
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
39
        String formEmail = request.getParameter("email");
40

  
41
        if (formEmail == null){
42
            request.getSession().setAttribute("message", "Error reading email.");
43
            response.sendRedirect("./remindUsername.jsp");
44
        }
45

  
46
        try{
47
            String username = ldapActions.getUsername(formEmail);
48
            if ( username != null && !username.isEmpty()) {
49
                //emailActions.sendUsernameReminder(formEmail);
50

  
51
            } else {
52
                request.getSession().setAttribute("message", "User not found");
53
                response.sendRedirect("./remindUsername.jsp");
54
            }
55

  
56

  
57
        } catch (LDAPException ldape) {
58
            //TODO create error page
59
            logger.error("Could not find user with email " + formEmail, ldape);
60
            response.sendRedirect("./error.jsp");
61
        }
62
    }
63

  
64
}
modules/dnet-openaire-users/trunk/src/main/java/eu/dnetlib/openaire/usermanagement/ForgotPasswordServlet.java
1
package eu.dnetlib.openaire.usermanagement;
2

  
3
import com.unboundid.ldap.sdk.LDAPException;
4
import eu.dnetlib.openaire.user.utils.EmailActions;
5
import eu.dnetlib.openaire.user.utils.LDAPActions;
6
import eu.dnetlib.openaire.user.utils.VerificationActions;
7
import org.apache.log4j.Logger;
8
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
10

  
11
import javax.servlet.ServletConfig;
12
import javax.servlet.ServletException;
13
import javax.servlet.http.HttpServlet;
14
import javax.servlet.http.HttpServletRequest;
15
import javax.servlet.http.HttpServletResponse;
16
import java.io.IOException;
17
import java.util.Date;
18
import java.util.UUID;
19

  
20
/**
21
 * Created by kiatrop on 28/9/2017.
22
 */
23

  
24
public class ForgotPasswordServlet extends HttpServlet {
25

  
26
    public void init(ServletConfig config) throws ServletException {
27
        super.init(config);
28
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
29
                config.getServletContext());
30
    }
31

  
32
    @Autowired
33
    private LDAPActions ldapActions;
34

  
35
    @Autowired
36
    private VerificationActions verificationActions;
37

  
38
    private EmailActions emailActions;
39

  
40
    private Logger logger = Logger.getLogger(ForgotPasswordServlet.class);
41

  
42

  
43
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
44

  
45
        String formEmail = (String)request.getAttribute("email");
46

  
47
        if (formEmail == null) {
48
            request.getSession().setAttribute("message", "Error reading email.");
49
            response.sendRedirect("./forgotPassword.jsp");
50
        }
51

  
52
        try {
53
            String userEmail = ldapActions.getUsername(formEmail);
54

  
55
            if (userEmail == null) {
56
                request.getSession().setAttribute("message", "User does not exist.");
57
                response.sendRedirect("./forgotPassword.jsp");
58

  
59
            } else {
60
                String username = ldapActions.getUsername(userEmail);
61
                UUID verificationCode = UUID.randomUUID();
62
                Date creationDate = new Date();
63

  
64
                if (verificationActions.verificationEntryExists(username)) {
65
                    verificationActions.addVerificationEntry(username, verificationCode.toString(), creationDate);
66

  
67
                } else {
68
                    verificationActions.updateVerificationEntry(username, verificationCode.toString(), creationDate);
69
                }
70

  
71
                emailActions.sendVerificationCode(userEmail);
72

  
73
            }
74

  
75

  
76
        } catch (LDAPException ldape) {
77
            //TODO create error page
78
            request.getSession().setAttribute("message", "Error sending email.");
79
            response.sendRedirect("./forgotPassword.jsp");
80
        }
81

  
82
        response.setContentType("text/html");
83
        response.sendRedirect("./verify.jsp");
84
    }
85

  
86
}
modules/dnet-openaire-users/trunk/src/main/java/eu/dnetlib/openaire/usermanagement/ResetPasswordServlet.java
1
package eu.dnetlib.openaire.usermanagement;
2

  
3
import eu.dnetlib.openaire.user.utils.LDAPActions;
4
import eu.dnetlib.openaire.user.utils.VerificationActions;
5
import org.springframework.beans.factory.annotation.Autowired;
6
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
7

  
8
import javax.servlet.ServletConfig;
9
import javax.servlet.ServletException;
10
import javax.servlet.http.HttpServlet;
11
import javax.servlet.http.HttpServletRequest;
12
import javax.servlet.http.HttpServletResponse;
13
import java.io.IOException;
14
import java.io.PrintWriter;
15

  
16
/**
17
 * Created by kiatrop on 28/9/2017.
18
 */
19
public class ResetPasswordServlet extends HttpServlet {
20

  
21
    public void init(ServletConfig config) throws ServletException {
22
        super.init(config);
23
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
24
                config.getServletContext());
25
    }
26

  
27
    @Autowired
28
    private VerificationActions verificationActions;
29

  
30
    @Autowired
31
    private LDAPActions ldapActions;
32

  
33
    @Override
34
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
35
        response.setContentType("text/html");
36
        PrintWriter printWriter = response.getWriter();
37

  
38
        String password = (String)request.getAttribute("password");
39
        String confirmPassword = (String)request.getAttribute("confirmPassword");
40

  
41
        if (password.equals(confirmPassword)) {
42
            //TODO update ldap
43
            //ldapActions.update()
44
        }
45

  
46
        response.sendRedirect("./success.jsp");
47
        printWriter.close();
48
    }
49
}
modules/dnet-openaire-users/trunk/src/main/webapp/verify.jsp
1
<!DOCTYPE html>
2
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3
<html lang="en-gb" dir="ltr" vocab="http://schema.org/">
4
<head>
5
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
  <meta name="viewport" content="width=device-width, initial-scale=1">
8
  <base href=".">
9
  <title>OpenAIRE - Forgot password, verification code</title>
10
  <script src="./js/jquery.js"></script>
11
  <script src="./js/uikit.js"></script>
12
  <script src="./js/validation.js"></script>
13
  <link rel="stylesheet" style="text/css" href="./css/theme.css">
14
  <link rel="stylesheet" style="text/css" href="./css/custom.css">
15
  <link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
16
</head>
17
<body class="" style="">
18
  <div class="uk-offcanvas-content uk-height-viewport">
19
    <!-- MENU STARTS HERE -->
20
    <!-- MAIN MENU STARTS HERE -->
21
    <div class="tm-header  tm-header-transparent" uk-header="">
22
      <div class="uk-container uk-container-expand">
23
        <nav class="uk-navbar" uk-navbar="{&quot;align&quot;:&quot;left&quot;}">
24
          <div class="uk-navbar-center">
25
            <div class="uk-logo uk-navbar-item">
26
              <img alt="OpenAIRE" class="uk-responsive-height" src="./images/Logo_Horizontal.png">
27
            </div>
28
          </div>
29
        </nav>
30
      </div>
31
    </div>
32
    <!-- MENU ENDS HERE -->
33
    <!-- CONTENT STARTS HERE -->
34
    <div class="first_page_section uk-section-default uk-section uk-padding-remove-vertical">
35
      <div class="first_page_banner_headline uk-grid-collapse uk-flex-middle uk-margin-remove-vertical uk-grid" uk-grid="">
36
      </div>
37
    </div>
38
    <div class=" uk-section  uk-margin-small-top tm-middle custom-main-content" id="tm-main">
39
      <div class="uk-container uk-container-small uk-margin-medium-top  uk-margin-small-bottom uk-text-center">
40
        <div uk-grid="" class="uk-grid uk-grid-stack">
41
          <div class="tm-main uk-width-1-2@s uk-width-1-1@m  uk-width-1-1@l uk-row-first uk-first-column uk-align-center">
42
            <div class="uk-grid ">
43
              <!-- CENTER SIDE -->
44
              <div class="uk-width-1-1@m uk-width-1-1@s uk-text-center">
45
                <div class="middle-box text-center loginscreen animated fadeInDown ">
46
                  <p>An email has been sent to your email address. The email contains a verification code, please paste the verification code in the field below to prove that you are the owner of this account.</p>
47
                  <div class="uk-width-1-3@m uk-align-center">
48
                      <!-- Validate form -->
49
                      <div id="registerForm">
50
                        <form action="verifyCode" method="POST" role="form" class="m-t" id="register_form">
51
                          <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
52
                          <div class="alert alert-success" aria-hidden="true" style="display: none;"></div>
53
                          <div class="alert alert-danger" aria-hidden="true" style="display: none;"></div>
54
                            <div class="form-group">
55
                              <span class="msg_username_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your username.</span>
56
                              <input id="username" name="username" type="text" placeholder="Username" class="form-control"></div>
57
                              <div class="form-group">
58
                              <span class="msg_verification_code_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your verification code.</span>
59
                              <input id="verification_code" name="verification_code" type="text" placeholder="Verification Code" class="form-control"></div>
60
                              <div class="uk-margin uk-grid-small uk-child-width-auto uk-grid uk-text-left uk-grid-stack" uk-grid="">
61
                              <div class="uk-width-1-1 uk-grid-margin uk-first-column">
62
                                <button type="submit" class="uk-button uk-button-primary" onclick="return validateForm();">Submit</button>
63
                              </div>
64
                            </div>
65
                        </form>
66
                      </div>
67
                      <!-- END OF REGISTER FORM -->
68
                        <script>
69
                            $("#username").focusin(function() {
70
                              $(this).removeClass('aai-form-danger');
71
                              $(".msg_username_error").fadeOut();
72
                            });
73

  
74
                            $("#verification_code").focusin(function() {
75
                                $(this).removeClass('aai-form-danger');
76
                                $(".msg_verification_code_error").fadeOut();
77
                            });
78
                      </script>
79
                    </div>
80
                  </ul>
81
                </div>
82
              </div>
83
              <!-- END OF CENTER SIDE -->
84
            </div>
85
          </div>
86
        </div>
87
      </div>
88
    </div>
89
    <!-- CONTENT ENDS HERE -->
90
    <!-- FOOTER STARTS HERE-->
91
    <div class="custom-footer"  style="z-index: 200;">
92
      <div class="uk-section-primary uk-section uk-section-small">
93
        <div class="uk-container">
94
          <div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
95
            <div class="uk-width-1-1@m uk-first-column">
96
              <div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-center">
97
                <img alt="OpenAIRE" class="el-image" src="./images/Logo_Horizontal_white_small.png">
98
              </div>
99
              <div class="footer-license uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
100
                <div><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"><img alt="Creative" src="./images/80x15.png" style="height: auto; max-width: 100%; vertical-align: middle;"></a>&nbsp;UNLESS OTHERWISE INDICATED, ALL MATERIALS CREATED BY THE OPENAIRE CONSORTIUM ARE LICENSED UNDER A&nbsp;<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.</div>
101
                <div>OPENAIRE IS POWERED BY&nbsp;<a href="http://www.d-net.research-infrastructures.eu/">D-NET</a>.</div>
102
              </div>
103
              <div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right">
104
                <a class="uk-totop uk-icon" href="#" uk-scroll="" uk-totop="">
105
                </a>
106
              </div>
107
            </div>
108
          </div>
109
        </div>
110
      </div>
111
    </div>
112
    <!-- FOOTER ENDS HERE -->
113
  </div>
114
</body>
115
</html>
modules/dnet-openaire-users/trunk/src/main/webapp/resetPassword.jsp
1
<!DOCTYPE html>
2
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
3
<html lang="en-gb" dir="ltr" vocab="http://schema.org/">
4
<head>
5
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
7
  <meta name="viewport" content="width=device-width, initial-scale=1">
8
  <base href=".">
9
  <title>OpenAIRE - Enter new password</title>
10
  <script src="./js/jquery.js"></script>
11
  <script src="./js/uikit.js"></script>
12
  <script src="./js/validation.js"></script>
13
  <link rel="stylesheet" style="text/css" href="./css/theme.css">
14
  <link rel="stylesheet" style="text/css" href="./css/custom.css">
15
  <link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
16
</head>
17
<body class="" style="">
18
  <div class="uk-offcanvas-content uk-height-viewport">
19
    <!-- MENU STARTS HERE -->
20
    <!-- MAIN MENU STARTS HERE -->
21
    <div class="tm-header  tm-header-transparent" uk-header="">
22
      <div class="uk-container uk-container-expand">
23
        <nav class="uk-navbar" uk-navbar="{&quot;align&quot;:&quot;left&quot;}">
24
          <div class="uk-navbar-center">
25
            <div class="uk-logo uk-navbar-item">
26
              <img alt="OpenAIRE" class="uk-responsive-height" src="./images/Logo_Horizontal.png">
27
            </div>
28
          </div>
29
        </nav>
30
      </div>
31
    </div>
32
    <!-- MENU ENDS HERE -->
33
    <!-- CONTENT STARTS HERE -->
34
    <div class="first_page_section uk-section-default uk-section uk-padding-remove-vertical">
35
      <div class="first_page_banner_headline uk-grid-collapse uk-flex-middle uk-margin-remove-vertical uk-grid" uk-grid="">
36
      </div>
37
    </div>
38
    <div class=" uk-section  uk-margin-small-top tm-middle custom-main-content" id="tm-main">
39
      <div class="uk-container uk-container-small uk-margin-medium-top  uk-margin-small-bottom uk-text-center">
40
        <div uk-grid="" class="uk-grid uk-grid-stack">
41
          <div class="tm-main uk-width-1-2@s uk-width-1-1@m  uk-width-1-1@l uk-row-first uk-first-column uk-align-center">
42
            <div class="uk-grid ">
43
              <!-- CENTER SIDE -->
44
              <div class="uk-width-1-1@m uk-width-1-1@s uk-text-center">
45
                <div class="middle-box text-center loginscreen animated fadeInDown ">
46
                  <p>To complete the password reset process, please enter a new password.</p>
47
                  <div class="uk-width-1-3@m uk-align-center">
48
                      <!-- REGISTER FORM -->
49
                      <div id="registerForm">
50
                        <form target="changePassword" method="POST" role="form" class="m-t" id="register_form" >
51
                          <div class="alert alert-success" aria-hidden="true" style="display: none;"></div>
52
                          <div class="alert alert-danger" aria-hidden="true" style="display: none;"></div>
53
                            <div class="form-group">
54
                              <span class="msg_password_error uk-text-danger uk-text-small uk-float-left" style="display:none">Please enter your password.</span>
55
                              <span class="msg_pass_conf_error uk-text-danger uk-text-small uk-float-left" style="display:none">These passwords don't match.</span>
56
                              <input id="password" name="password" type="password" placeholder="Password" class="form-control"></div>
57
                              <div class="form-group">
58
                                <input id="password_conf" name="password_conf" type="password" placeholder="Confirm password" class="form-control"></div>
59
                              <div class="uk-margin uk-grid-small uk-child-width-auto uk-grid uk-text-left uk-grid-stack" uk-grid="">
60
                              <div class="uk-width-1-1 uk-grid-margin uk-first-column">
61
                                <button type="button" class="uk-button uk-button-primary" onclick="return validateForm();">Submit</button>
62
                              </div>
63
                            </div>
64
                        </form>
65
                      </div>
66
                      <!-- END OF REGISTER FORM -->
67
                      <script>
68
                          $("#password").focusin(function() {
69
                            $(this).removeClass('aai-form-danger');
70
                            $(".msg_password_error").fadeOut();
71
                            $(".msg_pass_conf_error").fadeOut();
72
                          });
73

  
74
                          $("#password_conf").focusin(function() {
75
                              $(this).removeClass('aai-form-danger');
76
                              $(".msg_pass_conf_error").fadeOut();
77
                          });
78
                    </script>
79
                    </div>
80
                  </ul>
81
                </div>
82
              </div>
83
              <!-- END OF CENTER SIDE -->
84
            </div>
85
          </div>
86
        </div>
87
      </div>
88
    </div>
89
    <!-- CONTENT ENDS HERE -->
90
    <!-- FOOTER STARTS HERE-->
91
    <div class="custom-footer"  style="z-index: 200;">
92
      <div class="uk-section-primary uk-section uk-section-small">
93
        <div class="uk-container">
94
          <div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
95
            <div class="uk-width-1-1@m uk-first-column">
96
              <div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-center">
97
                <img alt="OpenAIRE" class="el-image" src="./images/Logo_Horizontal_white_small.png">
98
              </div>
99
              <div class="footer-license uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
100
                <div><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"><img alt="Creative" src="./images/80x15.png" style="height: auto; max-width: 100%; vertical-align: middle;"></a>&nbsp;UNLESS OTHERWISE INDICATED, ALL MATERIALS CREATED BY THE OPENAIRE CONSORTIUM ARE LICENSED UNDER A&nbsp;<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.</div>
101
                <div>OPENAIRE IS POWERED BY&nbsp;<a href="http://www.d-net.research-infrastructures.eu/">D-NET</a>.</div>
102
              </div>
103
              <div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right">
104
                <a class="uk-totop uk-icon" href="#" uk-scroll="" uk-totop="">
105
                </a>
106
              </div>
107
            </div>
108
          </div>
109
        </div>
110
      </div>
111
    </div> <!-- FOOTER ENDS HERE -->
112
  </div>
113
</body>
114
</html>
modules/dnet-openaire-users/trunk/src/main/webapp/WEB-INF/log4j.properties
4 4
log4j.logger.org.mitre.openid = DEBUG
5 5
log4j.logger.org.springframework = DEBUG, S
6 6

  
7
#log4j.additivity.org.springframework = false
7
log4j.additivity.org.springframework = false
8 8

  
9 9
log4j.appender.R=org.apache.log4j.RollingFileAppender
10 10
log4j.appender.R.File=/var/log/dnet/user-management/user-management.log
modules/dnet-openaire-users/trunk/src/main/webapp/WEB-INF/web.xml
39 39
        <url-pattern>/api/*</url-pattern>
40 40
    </servlet-mapping>
41 41

  
42
    <servlet>
43
        <servlet-name>ForgotPasswordServlet</servlet-name>
44
        <display-name>Forgot Password</display-name>
45
        <servlet-class>eu.dnetlib.openaire.usermanagement.ForgotPasswordServlet</servlet-class>
46
        <load-on-startup>1</load-on-startup>
47
    </servlet>
42 48

  
49
    <servlet-mapping>
50
        <servlet-name>ForgotPasswordServlet</servlet-name>
51
        <url-pattern>/forgotPassword</url-pattern>
52
    </servlet-mapping>
53

  
54
    <servlet>
55
        <servlet-name>VerificationCodeServlet</servlet-name>
56
        <display-name>Verify code</display-name>
57
        <servlet-class>eu.dnetlib.openaire.usermanagement.VerificationCodeServlet</servlet-class>
58
        <load-on-startup>1</load-on-startup>
59
    </servlet>
60

  
61
    <servlet-mapping>
62
        <servlet-name>VerificationCodeServlet</servlet-name>
63
        <url-pattern>/verifyCode</url-pattern>
64
    </servlet-mapping>
65

  
66
    <servlet>
67
        <servlet-name>ResetPasswordServlet</servlet-name>
68
        <display-name>Reset password</display-name>
69
        <servlet-class>eu.dnetlib.openaire.usermanagement.ResetPasswordServlet</servlet-class>
70
        <load-on-startup>1</load-on-startup>
71
    </servlet>
72

  
73
    <servlet-mapping>
74
        <servlet-name>ResetPasswordServlet</servlet-name>
75
        <url-pattern>/resetPassword</url-pattern>
76
    </servlet-mapping>
77

  
78
    <servlet>
79
        <servlet-name>RemindUsernameServlet</servlet-name>
80
        <display-name>Username Reminder</display-name>
81
        <servlet-class>eu.dnetlib.openaire.usermanagement.RemindUsernameServlet</servlet-class>
82
        <load-on-startup>1</load-on-startup>
83
    </servlet>
84

  
85
    <servlet-mapping>
86
        <servlet-name>RemindUsernameServlet</servlet-name>
87
        <url-pattern>/remindUsername</url-pattern>
88
    </servlet-mapping>
89

  
90

  
43 91
    <filter>
44 92
        <filter-name>CorsFilter</filter-name>
45 93
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
......
65 113
        <url-pattern>/*</url-pattern>
66 114
    </filter-mapping>
67 115

  
68
<!--
69 116
    <filter>
70
        <filter-name>requestContextFilter</filter-name>
71
        <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
72
    </filter>
73

  
74
    <filter-mapping>
75
        <filter-name>requestContextFilter</filter-name>
76
        <url-pattern>/*</url-pattern>
77
    </filter-mapping>
78
-->
79
    <filter>
80 117
        <filter-name>springSecurityFilterChain</filter-name>
81 118
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
82 119
    </filter>
modules/dnet-openaire-users/trunk/src/main/webapp/css/custom.css.1
1

  
2
.tm-toolbar .uk-subnav-line .custom-discover-li {
3
  color:#05007A !important;
4
  background:#fff;
5
  display: block;
6
}
7
.tm-toolbar .uk-subnav-line .custom-discover-li  a{
8
  color:#05007A !important;
9
}
10
.custom-discover-toolbar   ul.uk-subnav.uk-subnav-line{
11
  background-color: #f25f30 !important;
12
  }
13

  
14
  .custom-discover-toolbar .inner {
15
       background-color: #f25f30 !important;
16
  }
17

  
18
  .custom-discover-toolbar{
19
    border-top-color:#f25f30 !important;
20
  }
21
.custom-footer{
22
   position:relative;
23
   bottom:0;
24
   left:0;
25
}
26
.custom-external {
27
    background: rgba(0, 0, 0, 0) url("/assets/icon_external.png") no-repeat scroll left center;
28
    padding: 0 0 0 16px;
29
}
30

  
31
.custom-navbar-toggle-icon, .custom-user-mini-panel{
32
  color:#444 !important
33
}
34
.custom-user-mini-panel a{
35
  color:rgb(36, 91, 204);
36
}
37
.custom-main-content{
38
  min-height: 550px;
39
}
40

  
41
.custom-autocomplete .uk-nav-autocomplete > li > a:hover {
42
    background: #00a8e6 none repeat scroll 0 0;
43
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;
44
    color: #FFF;
45
    outline: medium none;
46
    text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1);
47
}
48

  
49
.custom-autocomplete .uk-nav-navbar > li > a {
50
    color: #444;
51
}
52
.custom-description-list-horizontal{ line-height:200%}
53
.uk-alert-default {
54
  background: #fff none repeat scroll 0 0;
55
    border: 1px solid #ddd;
56
    border-radius: 4px;
57
    color: #444;
58
    height: 30px;
59
    max-width: 100%;
60
    padding: 4px 6px;
61

  
62
}
63
.custom-hidden-dropdown-menu {position:static !important;}
64
.searchFilterBoxValues {overflow:auto; max-height:200px; }
65
.selected-filters-box {margin:5px; background-color:#F8F8F8; }
66
.search-form {margin:5px;  }
67
.clickable { cursor:pointer; }
68
.search-filters .uk-accordion-title{
69
  font-size: 14px;
70
  line-height: 18px;
71
}
72
.search-results {
73
  min-height: 1100px;
74
}
75
.other-results {
76
  min-height: 300px;
77
}
78
.OPEN {
79
    background: rgba(0, 0, 0, 0) url("/assets/openAccess.png") no-repeat scroll right center;
80
    padding-right: 18px;
81
    min-height: 18px;
82
}
83

  
84
.EMBARGO, .CLOSED, .RESTRICTED {
85
    background: rgba(0, 0, 0, 0) url("/assets/closedAccess.png") no-repeat scroll right center;
86
    padding-right: 18px;
87
}
88

  
89
.sc39 {
90
    background: rgba(0, 0, 0, 0) url("/assets/sc39.png") no-repeat scroll right center;
91
    padding-right: 24px;
92
}
93

  
94
.projectIcon {
95
    display: inline-table;
96
}
97

  
98
.dateFilter .mydp{
99
  margin-top:5px;
100
}
101

  
102

  
103
/*.tooltip {
104
    max-width: none;
105
    background: rgba(100, 100, 100, 1);
106
}*/
107
.tooltip-custom-font-size {
108
    font-size: 120%;
109
}
110

  
111
.custom-select-mini{
112
  max-width:170px !important;
113
}
114
.custom-icon {
115
    line-height: unset;
116
}
117
/*.custom-tab-content-large{
118
    min-height: 800px;
119
}
120
 */
121
.custom-tab-content {
122
    min-height: 250px;
123
}
124

  
125
.custom-dataTable-content {
126
    min-height: 600px;
127
}
128

  
129
.custom-html-table-height {
130
  height: 500px;
131
}
132

  
133

  
134

  
135

  
136
.filterItem span {
137
display: inline-flex;
138
}
139
.filterItem .filterName {
140
max-width: 71%;
141

  
142
}
143
.browseFilters .filterItem .filterName {
144
max-width: 68%;
145
}
146

  
147
.filterItem .filterNumber {
148
width: 20%;
149
}
150
.filterItem span {
151

  
152
white-space: nowrap;
153
}
154
.browseFilters .filterItem span div {
155
  /*min-width: 45px;*/
156
}
157
.filterItem span div {
158
overflow: hidden;
159
text-overflow: ellipsis;
160
/*min-width: 81px;*/
161
}
162

  
163
.browseFilters{
164
overflow-y: auto;
165
overflow-x: hidden;
166
max-height:265px;
167
}
168

  
169

  
170

  
171
.custom-offcanvas-close {
172
    position: relative;
173
    right: 0;
174
    top: 0;
175
}
176
.uk-link{
177
  color: #292C3D !important;
178
}
179
.uk-breadcrumb > :last-child > * {
180
    color:#cbcbcb !important;
181
}
182
.uk-breadcrumb .uk-active a{
183
    color: #767779  !important;
184
}
185

  
186
.publicationTitleIcon {
187
  background: url("/assets/publication.png") no-repeat;
188
}
189
.datasetTitleIcon {
190
  background: url("/assets/dataset.png") no-repeat;
191
}
192
.projectTitleIcon {
193
  background: url("/assets/project.png") no-repeat;
194
}
195
.organizationTitleIcon {
196
  background: url("/assets/organization.png") no-repeat;
197
}
198
.datasourceTitleIcon {
199
  background: url("/assets/datasource.png") no-repeat;
200
}
201
.entityTitleIcon{
202
  background-repeat: :no-repeat;
203
  content: '';
204
  display: inline-block;
205
  height: 36px;
206
  width: 42px;
207
  vertical-align: middle;
208
}
209
.entityIcon{
210
  height: 15px;
211
  width: 20px;
212

  
213
}
214
/*.uk-tab{
215
  border-bottom: 1px #cbcbcb solid;
216
}*/
217
.label-underCuration{
218
  background: #fef5d2 !important;
219
}
220

  
221
.label-blue {
222
 background:#d4f3ff;
223
 color:#00a0de
224
}
225
.label-green {
226
 background:#d1f6e8;
227
 color:#01a566
228
}
229
.label-yellow {
230
 background:#fef5d2;
231
 color:#cca607
232
}
233
.label-red {
234
 background:#fef0ef;
235
 color:#f54f43
236
}
237
.label-grey{
238
  background: #f8f8f8;
239
  color: #666;
240
}
241
.label-orange{
242
  background: #fef5d2;
243
color: #f0506e;
244

  
245
}
246
.uk-tab {
247
	display: -ms-flexbox;
248
	display: -webkit-flex;
249
	display: flex;
250
	-ms-flex-wrap: wrap;
251
	-webkit-flex-wrap: wrap;
252
	flex-wrap: wrap;
253
	margin-left: -20px;
254
	padding: 0;
255
	list-style: none;
256
	position: relative;
257
}
258
.uk-tab::before {
259
    content: "";
260
    position: absolute;
261
    bottom: 0;
262
    left: 20px;
263
    right: 0;
264
    border-bottom: 1px solid #e5e5e5;
265
}
266
.mainPageSearchForm{
267
  background-image: url("./globe_tech.jpg"); background-color: rgb(255, 255, 255); box-sizing: border-box; min-height: calc(100vh - 412.767px);
268
}
269
.searchForm, .publicationsSearchForm, .projectsSearchForm, .organizationsSearchForm, .datasetsSearchForm, .datasourcesSearchForm, .journalsSearchForm,
270
.entityRegistriesSearchForm, .compatibleDatasourcesSearchForm,
271
.journalsTableSearchForm, .compatibleDatasourcesTableSearchForm, .entityRegistriesTableSearchForm{
272
  background-image: url('./formImage.jpg'); box-sizing: border-box; height: 250px;
273
}
274

  
275
.divider-table tbody td, .uk-table th {
276
    border-bottom: 1px solid #E5E5E5;
277
  }
278

  
279
  #feedback {
280
  	float: left;
281
  	position: fixed;
282
  	top: calc(50% - 47px);
283
  	right: 0;
284
  }
285

  
286
  #feedback a {
287
  	background: #F25F30;
288
  	border-radius: 5px 0 0 5px;
289
  	box-shadow: 0 0 3px rgba(0, 0, 0, .3);
290
  	border: 3px solid #fff;
291
  	border-right: 0;
292
  	display: block;
293
  	padding: 20px 12px;
294
  	transition: all .2s ease-in-out;
295
  }
296

  
297
  #feedback a:hover {
298
  	padding-right: 20px;
299
  }
300

  
301
.descriptionText{
302
  Padding-left: 25px !important;
303
  Border-left: 10px solid #fafafa;
304

  
305
}
306

  
307

  
308
/*
309
li span {
310
  display: inline-flex;
311
}
312

  
313
.item span {
314
  width: 100px;
315
  margin-left: 1em;
316
  white-space: nowrap;
317
}
318

  
319
.item span div {
320
  overflow: hidden;
321
  text-overflow: ellipsis;
322
}*/
modules/dnet-openaire-users/trunk/src/main/webapp/css/custom.css
1
@import url('https://fonts.googleapis.com/css?family=Josefin+Sans|Raleway|Roboto|Roboto:900|Roboto+Condensed|Roboto+Mono|Roboto+Slab');
2
@import url('https://fonts.googleapis.com/css?family=Open+Sans:300,400');
3
@import url('https://fonts.googleapis.com/css?family=Merriweather|Merriweather+Sans');
4
@import url('https://fonts.googleapis.com/css?family=Roboto+Slab');
5
@import url('https://fonts.googleapis.com/css?family=Lora');
6
@import url('https://fonts.googleapis.com/css?family=Raleway|Raleway+Dots');
7

  
8
.custom-icon {
9
    line-height: unset;
10
}
11
/*.OPEN {
12
    background: rgba(0, 0, 0, 0) url('images/openaccess copy.svg') no-repeat scroll right center;
13
    /*display: inline-block;*/
14
}*/
15
.small-bgicon {
16
 background-size: 25px;
17
 padding-right:25px;
18
}
19
.medium-bgicon {
20
 background-size: 50px;
21
 padding-right:50px;
22
}
23
.large-bgicon {
24
 background-size: 80px;
25
 padding-right:80px;
26
}
27

  
28

  
29
body {
30
font-family: 'Open Sans', sans-serif!important;
31
font-family: Raleway, sans-serif!important;
32
font-weight:400!important;
33

  
34
}
35
h1, .uk-h1, h2, .uk-h2, h3, .uk-h3 {
36
 font-family: 'Open Sans', sans-serif !important;
37
 text-transform:none!important;
38
 font-weight:300;
39
}
40
h4, .uk-h4, h5, .uk-h5 {
41
 font-family: 'Open Sans', sans-serif !important;
42
 font-weight:bold;
43
}
44

  
45
h6, .uk-h6 {
46
 font-family: 'Open Sans', sans-serif !important;
47
 font-weight: normal;
48
}
49
h2, .uk-h2 {
50
	font-size:36px;
51
}
52

  
53
a, .uk-link {
54
	color: #2D72D6;
55
}
56
a:hover, .uk-link:hover{
57
color: #D53B23;
58
}
59

  
60
/*.uk-badge, .badge, a.badge { border-radius: 2px;}*/
61

  
62

  
63
.hero_to_top  {
64
}
65
.image-front-topbar {
66
	margin-top:-40px;
67
}
68

  
69
.tm-header {
70
/*padding-top:40px;*/
71
}
72

  
73
.tm-toolbar {
74
border-top: 5px solid #05007A;
75
position:relative;
76
color: #fff;
77
padding-top: 0px;
78
padding-bottom:0px;
79
background:rgba(255,255,255, 0.0);
80
z-index:10000;
81
/*background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0)), url(/images/toolbar_bg.png);*/
82

  
83
}
84
.tm-toolbar .forimage {
85
background:rgba(255,255,255, 0.4);
86
}
87

  
88
.uk-section-overlap {
89
	/*margin-top:-40px!important;*/
90
}
91
.uk-sticky{
92
}
93

  
94
.tm-header .uk-navbar-left {position:relative;z-index:9999!important;}
95
.tm-header .uk-logo {padding: 5px 10px 10px 10px; position:relative;z-index:1000!important;}
96
.tm-header .uk-navbar-transparent{
97
  /* background:rgba(255,255,255, 0.7);*/
98
  padding-top:4px;
99
}
100
.inner {
101
 left:0px;
102
 background-color: #05007A;
103
 margin-top:-5px;
104
}
105
.tm-toolbar .uk-container {
106
padding-right:0px;
107
}
108

  
109
.tm-toolbar ul.uk-subnav.uk-subnav-line{
110
 margin-top:-10px;
111
  background-color: #05007A;
112
  padding:10px 10px  0px 0px;
113
  transform: skew(25deg);
114
  margin-right:10px;
115
}
116

  
117
.tm-toolbar .uk-subnav-line li {
118
  padding:5px 25px 5px 25px;
119
  /*transition: background 0.2s;*/
120
  /*  display:inline-block;*/
121
  font-family:Roboto!important;
122
  font-weight:900!important;
123
  text-transform:uppercase!important;
124
  font-size:12px!important;
125
  opacity:1!important;
126
  display:inline-block;
127
}
128
.tm-toolbar .uk-subnav-line > :before {
129
    content: none;
130
    display: block;
131
    /* display: inline-block*/
132
    height: 10px;
133
    vertical-align: middle
134
}
135

  
136
.uk-subnav-line > :nth-child(n + 2):before {
137
    margin-right: 10px;
138
    border-left: 0px ;
139
}
140

  
141
.tm-toolbar .uk-subnav-line li  a{
142
  display: block;
143
  text-decoration:none;
144
  transform: skew(-25deg);
145
  font-family:Roboto:900!important;
146
  text-transform:uppercase!important;
147
  font-size:13px!important;
148
  opacity:1!important;
149
  color:#fff!important;
150
}
151

  
152

  
153
.tm-toolbar .uk-subnav-line li:hover {
154
  color:#05007A!important;
155
  background:#fff;
156
  display: block;
157
}
158

  
159

  
160
.tm-toolbar .uk-subnav-line .uk-active .home-hover li:hover,
161
li.uk-active.home-hover
162
{
163
 background:#05007A!important;
164
}
165

  
166
.tm-toolbar .uk-dotnav, .tm-toolbar .uk-subnav {
167
  margin-bottom:0px!important;
168
}
169

  
170
.tm-toolbar .uk-subnav-line li a:hover,
171
.tm-toolbar .uk-subnav-line li:hover a {
172
  display: block;
173
  color:#05007A!important;
174
}
175

  
176
.movetotop .uk-slidenav-position{
177
  /*top:-130px;
178
  z-index:5;*/
179
}
180

  
181
.uk-navbar-container:not(.uk-navbar-transparent) {
182
	background: #fff;
183
	box-shadow: 2px 15px 50px rgba(41, 44, 61, .1);
184
}
185

  
186
.uk-navbar-sticky {
187
    box-shadow: 2px 15px 50px rgba(41, 44, 61, .1);
188
}
189

  
190
.navbar .nav>li>.dropdown-menu, .uk-navbar-dropdown
191
{display: none;
192
position: absolute;
193
z-index: 1020;
194
box-sizing: border-box;
195
width: 200px;
196
padding: 25px;
197
background: #fff;
198
color: #4F5260;
199
border-radius: 2px;
200
box-shadow: 2px 15px 50px rgba(41, 44, 61, .1)
201
}
202

  
203

  
204
/*
205
.uk-light a, .uk-light .uk-link,
206
.uk-section-primary:not(.uk-preserve-color) a, .uk-section-primary:not(.uk-preserve-color) .uk-link,
207
.uk-section-secondary:not(.uk-preserve-color) a, .uk-section-secondary:not(.uk-preserve-color) .uk-link,
208
.uk-tile-primary:not(.uk-preserve-color) a, .uk-tile-primary:not(.uk-preserve-color) .uk-link,
209
.uk-tile-secondary:not(.uk-preserve-color) a, .uk-tile-secondary:not(.uk-preserve-color) .uk-link,
210
.uk-card-primary.uk-card-body a, .uk-card-primary.uk-card-body .uk-link, .uk-card-primary>:not([class*='uk-card-media']) a,
211
.uk-card-primary>:not([class*='uk-card-media']) .uk-link, .uk-card-secondary.uk-card-body a,
212
.uk-card-secondary.uk-card-body .uk-link, .uk-card-secondary>:not([class*='uk-card-media']) a,
213
.uk-card-secondary>:not([class*='uk-card-media']) .uk-link, .uk-overlay-primary a, .uk-overlay-primary .uk-link,
214
*/
215
.uk-navbar-container:not(.uk-navbar-transparent) a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link,
216
.uk-offcanvas-bar a, .uk-offcanvas-bar .uk-link, .tm-toolbar a, .tm-toolbar .uk-link {
217
	color: #292C3D
218
}
219

  
220

  
221
.uk-navbar-container:not(.uk-navbar-transparent) a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link,
222
.uk-offcanvas-bar a, .uk-offcanvas-bar .uk-link, .tm-toolbar a, .tm-toolbar .uk-link {
223
/*color:#292C3D;
224
color: #245BCC;
225
color: #2D72D6;
226
*/
227
/*
228
font-size: 14px;
229
line-height: 18px;
230
*/
231
}
232

  
233
/*footer*/
234
.footer-license {
235
font-size:11px!important;
236
line-height:16px!important;
237
}
238
.footer-license .uk-section-primary:not(.uk-preserve-color) a{
239
 color: #128DD5!important;
240
 font-size:11px!important;
241
line-height:16px!important;
242

  
243
}
244
.footer-license a:hover {
245
 color: #D33A24;
246
}
247

  
248
.uk-light .uk-navbar-nav>li>a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a, .uk-card-secondary.uk-card-body .uk-navbar-nav>li>a, .uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a, .uk-overlay-primary .uk-navbar-nav>li>a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a, .uk-offcanvas-bar .uk-navbar-nav>li>a, .tm-toolbar .uk-navbar-nav>li>a {
249
color:#292C3D;}
250

  
251
.uk-light .uk-navbar-nav>li.uk-active>a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li.uk-active>a, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li.uk-active>a, .uk-card-secondary.uk-card-body .uk-navbar-nav>li.uk-active>a, .uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li.uk-active>a, .uk-overlay-primary .uk-navbar-nav>li.uk-active>a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li.uk-active>a, .uk-offcanvas-bar .uk-navbar-nav>li.uk-active>a, .tm-toolbar .uk-navbar-nav>li.uk-active>a
252
color:#292C3D;}
253

  
254
.uk-light .uk-navbar-nav>li>a::before, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a::before,
255
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a::before,
256
.uk-card-primary.uk-card-body .uk-navbar-nav>li>a::before,
257
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a::before, .
258
uk-card-secondary.uk-card-body .uk-navbar-nav>li>a::before,
259
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a::before,
260
.uk-overlay-primary .uk-navbar-nav>li>a::before, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a::before,
261
.uk-offcanvas-bar .uk-navbar-nav>li>a::before, .tm-toolbar .uk-navbar-nav>li>a::before {
262

  
263
background-color: #128DD5;
264
}
265
.uk-navbar-nav>li>a::before {
266
/*height:2px;*/
267
background-color: #128DD5!important;
268
}
269
.uk-light .uk-navbar-nav>li:hover>a, .uk-light .uk-navbar-nav>li>a:focus, .uk-light .uk-navbar-nav>li>a.uk-open,
270
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,
271
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:focus,
272
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a.uk-open,
273
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li:hover>a,
274
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:focus,
275
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a.uk-open,
276
.uk-card-primary.uk-card-body .uk-navbar-nav>li:hover>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a:focus,
277
.uk-card-primary.uk-card-body .uk-navbar-nav>li>a.uk-open,
278
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li:hover>a,
279
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:focus,
280
.uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a.uk-open,
281
.uk-card-secondary.uk-card-body .uk-navbar-nav>li:hover>a,
282
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:focus,
283
.uk-card-secondary.uk-card-body .uk-navbar-nav>li>a.uk-open,
284
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li:hover>a,
285
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:focus,
286
.uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a.uk-open,
287
.uk-overlay-primary .uk-navbar-nav>li:hover>a, .uk-overlay-primary .uk-navbar-nav>li>a:focus,
288
.uk-overlay-primary .uk-navbar-nav>li>a.uk-open, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li:hover>a,
289
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a:focus,
290
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a.uk-open,
291
.uk-offcanvas-bar .uk-navbar-nav>li:hover>a, .uk-offcanvas-bar .uk-navbar-nav>li>a:focus,
292
.uk-offcanvas-bar .uk-navbar-nav>li>a.uk-open, .tm-toolbar .uk-navbar-nav>li:hover>a,
293
.tm-toolbar .uk-navbar-nav>li>a:focus, .tm-toolbar .uk-navbar-nav>li>a.uk-open {
294
color: #128DD5;
295
}
296

  
297
.uk-light .uk-navbar-nav > li:hover > a, .uk-light .uk-navbar-nav > li > a:focus,
298
.uk-light .uk-navbar-nav > li > a.uk-open, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav > li:hover > a,
299
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav > li > a:focus,
300
.uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav > li > a.uk-open,
301
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li:hover > a,
302
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a:focus,
303
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a.uk-open,
304
.uk-card-primary.uk-card-body .uk-navbar-nav > li:hover > a, .uk-card-primary.uk-card-body .uk-navbar-nav > li > a:focus,
305
.uk-card-primary.uk-card-body .uk-navbar-nav > li > a.uk-open, .uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li:hover > a,
306
.uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a:focus,
307
.uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a.uk-open,
308
.uk-card-secondary.uk-card-body .uk-navbar-nav > li:hover > a, .uk-card-secondary.uk-card-body .uk-navbar-nav > li > a:focus,
309
.uk-card-secondary.uk-card-body .uk-navbar-nav > li > a.uk-open, .uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li:hover > a,
310
.uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a:focus,
311
.uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a.uk-open,
312
.uk-overlay-primary .uk-navbar-nav > li:hover > a, .uk-overlay-primary .uk-navbar-nav > li > a:focus,
313
.uk-overlay-primary .uk-navbar-nav > li > a.uk-open, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li:hover > a,
314
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li > a:focus,
315
.uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li > a.uk-open,
316
.uk-offcanvas-bar .uk-navbar-nav > li:hover > a, .uk-offcanvas-bar .uk-navbar-nav > li > a:focus,
317
.uk-offcanvas-bar .uk-navbar-nav > li > a.uk-open, .tm-toolbar .uk-navbar-nav > li:hover > a,
318
.tm-toolbar .uk-navbar-nav > li > a:focus, .tm-toolbar .uk-navbar-nav > li > a.uk-open {
319
    color: #128DD5!important;
320
}
321
.uk-light .uk-navbar-nav>li.uk-active>a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li.uk-active>a, .uk-card-primary.uk-card-body .uk-navbar-nav>li.uk-active>a, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li.uk-active>a, .uk-card-secondary.uk-card-body .uk-navbar-nav>li.uk-active>a, .uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li.uk-active>a, .uk-overlay-primary .uk-navbar-nav>li.uk-active>a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li.uk-active>a, .uk-offcanvas-bar .uk-navbar-nav>li.uk-active>a, .tm-toolbar .uk-navbar-nav>li.uk-active>a {
322
   color: #128DD5!important;
323
}
324
.uk-light a:hover, .uk-light .uk-link:hover,
325
.uk-section-primary:not(.uk-preserve-color) a:hover, .uk-section-primary:not(.uk-preserve-color) .uk-link:hover,
326
.uk-section-secondary:not(.uk-preserve-color) a:hover, .uk-section-secondary:not(.uk-preserve-color) .uk-link:hover,
327
.uk-card-primary.uk-card-body a:hover, .uk-card-primary.uk-card-body .uk-link:hover,
328
.uk-card-primary>:not([class*='uk-card-media']) a:hover, .uk-card-primary>:not([class*='uk-card-media']) .uk-link:hover,
329
.uk-card-secondary.uk-card-body a:hover, .uk-card-secondary.uk-card-body .uk-link:hover,
330
.uk-card-secondary>:not([class*='uk-card-media']) a:hover, .uk-card-secondary>:not([class*='uk-card-media']) .uk-link:hover,
331
.uk-overlay-primary a:hover, .uk-overlay-primary .uk-link:hover,
332
.uk-navbar-container:not(.uk-navbar-transparent) a:hover, .uk-navbar-container:not(.uk-navbar-transparent) .uk-link:hover,
333
.uk-offcanvas-bar a:hover, .uk-offcanvas-bar .uk-link:hover, .tm-toolbar a:hover, .tm-toolbar .uk-link:hover {
334
   color: #128DD5!important;
335
}
336

  
337
.uk-navbar-dropdown-nav>li.uk-active>a {
338
 color: #128DD5!important;
339
}
340
.uk-light .uk-navbar-nav > li > a:active, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav > li > a:active,
341
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li > a:active,
342
.uk-card-primary.uk-card-body .uk-navbar-nav > li > a:active, .uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a:active,
343
.uk-card-secondary.uk-card-body .uk-navbar-nav > li > a:active, .uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li > a:active,
344
.uk-overlay-primary .uk-navbar-nav > li > a:active, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li > a:active,
345
.uk-offcanvas-bar .uk-navbar-nav > li > a:active, .tm-toolbar .uk-navbar-nav > li > a:active {
346
    color: #292C3D!important;
347
}
348

  
349
.uk-light .uk-navbar-nav > li.uk-active > a, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav > li.uk-active > a,
350
.uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav > li.uk-active > a,
351
.uk-card-primary.uk-card-body .uk-navbar-nav > li.uk-active > a, .uk-card-primary > :not([class * ='uk-card-media']) .uk-navbar-nav > li.uk-active > a,
352
.uk-card-secondary.uk-card-body .uk-navbar-nav > li.uk-active > a,
353
.uk-card-secondary > :not([class * ='uk-card-media']) .uk-navbar-nav > li.uk-active > a,
354
.uk-overlay-primary .uk-navbar-nav > li.uk-active > a, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav > li.uk-active > a,
355
.uk-offcanvas-bar .uk-navbar-nav > li.uk-active > a, .tm-toolbar .uk-navbar-nav > li.uk-active > a {
356
    color: #292C3D!important;
357
}
358
.uk-light .uk-navbar-nav>li>a:active, .uk-section-primary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active, .uk-section-secondary:not(.uk-preserve-color) .uk-navbar-nav>li>a:active, .uk-card-primary.uk-card-body .uk-navbar-nav>li>a:active, .uk-card-primary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:active, .uk-card-secondary.uk-card-body .uk-navbar-nav>li>a:active, .uk-card-secondary>:not([class*='uk-card-media']) .uk-navbar-nav>li>a:active, .uk-overlay-primary .uk-navbar-nav>li>a:active, .uk-navbar-container:not(.uk-navbar-transparent) .uk-navbar-nav>li>a:active, .uk-offcanvas-bar .uk-navbar-nav>li>a:active, .tm-toolbar .uk-navbar-nav>li>a:active {
359
color:#128DD5!important;
360
}
361

  
362
.uk-navbar-dropdown-nav {
363
	font-size:14px;
364
}
365
.uk-navbar-nav>li>a, .uk-navbar-item, .uk-navbar-toggle, .navbar .brand, .navbar-search, .navbar .nav>li>a {
366
	font-size: 14px;
367
	font-family: Roboto;
368
	font-family: "Merriweather", serif;
369
	font-family: 'Merriweather Sans', sans-serif;
370
	font-family: 'Roboto Slab', serif;
371
	font-size: 16px;
372
	line-height: 23px;
373
text-transform:none;
374
color: rgba(0, 0, 0, 0.8)!important;
375
	font-weight: 500 !important;
376
}
377
.uk-nav-default .uk-nav-header,
378
.uk-navbar-dropdown-nav .uk-nav-header {
379
color: #245CCF;
380
font-size:14px;
381
}
382

  
383
.sidemenu .uk-h3{
384

  
385
padding-bottom: 15px;
386
font-weight: 300;
387
text-transform: none;
388
color:#040067;
389
}
390
.sidemenu .uk-nav, .uk-nav ul, .dropdown-menu {
391
font-weight: 300;
392
font-size: 14px;
393
color: #80828B;
394

  
395
}
396
.sidemenu ul>li>ul, .sidemenu ul>li>ol, .sidemenu ol>li>ol, .sidemenu ol>li>ul{
397
padding-left: 40px;
398
}
399
.sidemenu ul>li>ul a {
400
color: #80828B!important;
401
color: rgba(99, 104, 114, 0.8)!important;
402
}
403
.sidemenu ul>li>ul a:hover {
404
color: #D53B23!important;
405
}
406
.uk-nav-header:not(:first-child) {margin-top:10px;}
407
.uk-navbar-dropdown, .navbar .nav>li>.dropdown-menu {
408
	background:#fff;
409
}
410
.uk-nav>li>a,
411
.uk-navbar-dropdown-nav>li>a,
412
.uk-navbar-dropdown-nav .uk-nav-sub a {
413
	color:#292C3D;
414
	font-weight:300;
415
	padding:4px 0;
416
}
417
.uk-section-secondary:not(.uk-preserve-color) h3,
418
.uk-section-secondary:not(.uk-preserve-color) h3 a,
419
.uk-section-secondary:not(.uk-preserve-color) a:hover { color:#444!important;}
420

  
421

  
422
.uk-article-title {
423
font-size: 38px;
424
line-height: 1.1;
425
}
426

  
427
.uk-text-meta {
428
font-size: 14px;
429
line-height: 1.4;
430
color: #90929D;
431
font-family: PT Serif;
432
font-weight: 400;
433
text-transform: none;
434
letter-spacing: 0;
435
font-style: italic;
436
}
437
.uk-card-default .uk-card-title {
438
color: #292C3D !important;
439

  
440
}
441
.uk-light .uk-text-meta, .uk-section-primary:not(.uk-preserve-color) .uk-text-meta, .uk-section-secondary:not(.uk-preserve-color) .uk-text-meta, .uk-card-primary.uk-card-body .uk-text-meta, .uk-card-primary>:not([class*='uk-card-media']) .uk-text-meta, .uk-card-secondary.uk-card-body .uk-text-meta, .uk-card-secondary>:not([class*='uk-card-media']) .uk-text-meta, .uk-overlay-primary .uk-text-meta, .uk-navbar-container:not(.uk-navbar-transparent) .uk-text-meta, .uk-offcanvas-bar .uk-text-meta, .tm-toolbar .uk-text-meta{
442
color: #90929D;
443
}
444

  
445
.uk-text-primary {color: #040067!important;}
446
.uk-text-secondary {color: #00a0de!important;}
447
.uk-section-primary {
448
	background: #040067;
449
}
450
.uk-section-secondary {
451
	background: #00a0de;
452
}
453
.first_page_section {
454
    /*position: relative;*/
455
 }
456
.first_page_section .uk-section>:last-child {
457
position: relative;
458
top: 50%;
459
transform: translateY(-50%);
460
}
461

  
462
.first_page_section .first_page_banner_headline {
463
  /*position: relative;*/
464
  font-family: 'Open Sans', sans-serif;
465
  font-weight: 300;
466
  color:#fff;
467

  
468
}
469
.first_page_panel h3.uk-h1 {
470
  color:#fff;
471
}
472
.first_page_panel {
473
  border: 0px solid #e5e5e7!important;
474
 padding:20px 20px!important;
475
/*width:100%!important;*/
476
  font-size:24pt!important;
477
  padding:20px!important;
478
  color:#fff;
479
}
480
.first_page_panel .banner_text_bottom {
481
  font-size:20pt;
482
  padding:20px;
483
}
484
.mainHdr {background-color: rgb(4, 0, 103)!important;
485
}
486

  
487

  
488
/*tabs*/
489
.wk-tab::before {
490
    content: "";
491
    position: absolute;
492
    bottom: 0;
493
    left: 20px;
494
    right: 0;
495
    border-bottom: 1px solid #e5e5e5;
496
}
497
.wk-tab>li.wk-active>a {
498
border-color: transparent transparent #1678CB transparent !important;
499
background:tranparent;
500
border-bottom: 2px solid #1678CB;
501
}
502
.wk-tab>*>a {
503
    display: block;
504
    text-align: center;
505
    padding: 9px 20px;
506
    color: #444!important;
507
    border-bottom: 2px solid transparent;
508
    font-size: 12px;
509
    text-transform: uppercase;
510
    -webkit-transition: color 0.1s ease-in-out;
511
    transition: color 0.1s ease-in-out;
512
    line-height: 20px;
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff