<%@ page import="com.atlassian.jira.action.ActionContextKit, com.atlassian.jira.bc.security.login.LoginInfo, com.atlassian.jira.bc.security.login.LoginLoggers, com.atlassian.jira.bc.security.login.LoginReason, com.atlassian.jira.bc.security.login.LoginResult" %> <%@ page import="com.atlassian.jira.bc.security.login.LoginService" %> <%@ page import="com.atlassian.jira.config.properties.APKeys" %> <%@ page import="com.atlassian.jira.config.properties.ApplicationProperties" %> <%@ page import="com.atlassian.jira.security.JiraAuthenticationContext" %> <%@ page import="com.atlassian.jira.user.util.RecoveryMode" %> <%@ page import="com.atlassian.jira.user.util.UserManager" %> <%@ page import="com.atlassian.jira.util.I18nHelper" %> <%@ page import="com.atlassian.jira.util.JiraContactHelper" %> <%@ page import="com.atlassian.jira.util.JiraUtils" %> <%@ page import="com.atlassian.jira.web.action.JiraWebActionSupport" %> <%@ page import="com.atlassian.jira.web.filters.JiraLoginInterceptor" %> <%@ page import="com.atlassian.plugin.webresource.WebResourceManager" %> <%@ page import="com.atlassian.sal.api.user.UserRole" %> <%@ page import="com.atlassian.seraph.auth.AuthenticationErrorType" %> <%@ page import="com.atlassian.seraph.filter.LoginFilter" %> <%@ page import="com.atlassian.seraph.filter.LoginFilterRequest" %> <%@ page import="com.opensymphony.util.TextUtils" %> <%@ page import="webwork.action.ActionContext" %> <%@ page import="com.atlassian.jira.component.ComponentAccessor" %> <%@ taglib prefix="ww" uri="webwork" %> <%@ taglib prefix="aui" uri="webwork" %> <%@ taglib prefix="page" uri="sitemesh-page" %> <%@ taglib prefix="jira" uri="webwork" %> <% final LoginService loginService = ComponentAccessor.getComponent(LoginService.class); final ApplicationProperties applicationProperties = ComponentAccessor.getApplicationProperties(); final UserManager userManager = ComponentAccessor.getUserManager(); final JiraAuthenticationContext jiraAuthenticationContext = ComponentAccessor.getJiraAuthenticationContext(); final boolean allowCookies = applicationProperties.getOption(APKeys.JIRA_OPTION_ALLOW_COOKIES); final boolean publicSignUpAllowed = JiraUtils.isPublicMode(); final boolean showPermissionViolationError = request.getParameter("permissionViolation") != null; // Continue to support JIRA_OPTION_USER_EXTERNALMGT for Forgot Login until we get Read-only Internal Directory final boolean externalUserManagement = applicationProperties.getOption(APKeys.JIRA_OPTION_USER_EXTERNALMGT); final boolean showForgotLoginDetails = !externalUserManagement && userManager.hasPasswordWritableDirectory(); final String authStatus = LoginFilterRequest.getAuthenticationStatus(request); final AuthenticationErrorType authErrorType = LoginFilterRequest.getAuthenticationErrorType(request); final LoginResult lastLoginResult = (LoginResult) request.getAttribute(LoginService.LOGIN_RESULT); final LoginInfo loginInfo = lastLoginResult == null ? null : lastLoginResult.getLoginInfo(); final boolean isElevatedSecurityCheckShown = loginService.isElevatedSecurityCheckAlwaysShown() || (loginInfo != null && loginInfo.isElevatedSecurityCheckRequired()); final boolean failedAuthorisation = lastLoginResult != null && lastLoginResult.getReason() == LoginReason.AUTHORISATION_FAILED; final boolean failedElevatedSecurityCheck = lastLoginResult != null && lastLoginResult.getReason() == LoginReason.AUTHENTICATION_DENIED; request.setAttribute("loggedInUser", jiraAuthenticationContext.getUser() == null ? null : jiraAuthenticationContext.getUser().getDisplayName()); if (LoginLoggers.LOGIN_PAGE_LOG.isDebugEnabled()) { LoginLoggers.LOGIN_PAGE_LOG.debug("login.jsp called with lastLoginResult : " + String.valueOf(lastLoginResult)); } // added so that webworks getText exists ActionContext currentContext = ActionContext.getContext(); if (currentContext == null) { ActionContextKit.setContext(request,response,request.getContextPath()); JiraWebActionSupport fakeAction = new JiraWebActionSupport(){ }; ActionContext.getValueStack().pushValue(fakeAction); } WebResourceManager webResourceManager = ComponentAccessor.getWebResourceManager(); webResourceManager.requireResource("jira.webresources:captcha"); request.setAttribute("os_destination", request.getParameter("os_destination") == null ? "/secure/" : TextUtils.htmlEncode(request.getParameter("os_destination"))); // set a header so that javascript can know if they have been redirected if (showPermissionViolationError) { response.setHeader("X-Atlassian-Dialog-Control", "permissionviolation"); } // Get the contact administrators message I18nHelper i18nHelper = ComponentAccessor.getJiraAuthenticationContext().getI18nHelper(); JiraContactHelper jiraContactHelper = ComponentAccessor.getComponent(JiraContactHelper.class); final String contactAdministratorLink = jiraContactHelper.getAdministratorContactLinkHtml(request.getContextPath(), i18nHelper); // Check if we are expecting some certain user role UserRole userRole = JiraLoginInterceptor.getUserRole(request); if (userRole != null) { request.setAttribute("userRole", userRole.toString()); } request.setAttribute("recoveryMode", ComponentAccessor.getComponent(RecoveryMode.class)); %> <%= request.getContextPath() %>/login.jsp post login <% if (showForgotLoginDetails) { %> <% } %> warning

">

<% if (showPermissionViolationError) { %> warning

<%=contactAdministratorLink%>

<% } %> <% if (authStatus != null) { if (authStatus.equals(LoginFilter.LOGIN_FAILED)) { if (failedAuthorisation) { %> error

<%=contactAdministratorLink%>

<% } else { %> error

<% if (failedElevatedSecurityCheck) { %> <% } else { %> <% } %>

<% } } else if (authStatus.equals(LoginFilter.LOGIN_ERROR)) { %> error

<% if (AuthenticationErrorType.CommunicationError.equals(authErrorType)) { %> <% } else { %> <% } %>

<% } } %>
<% if (currentContext == null) { ActionContextKit.resetContext(); } %>