001 /**
002 * Copyright 2004-2012 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.hr.time.web;
017
018 import javax.servlet.http.HttpServletRequest;
019 import javax.servlet.http.HttpServletResponse;
020
021 import org.apache.commons.lang.StringUtils;
022 import org.apache.log4j.Logger;
023 import org.apache.struts.action.ActionForm;
024 import org.apache.struts.action.ActionForward;
025 import org.apache.struts.action.ActionMapping;
026 import org.apache.struts.action.ActionRedirect;
027 import org.kuali.hr.time.base.web.TkAction;
028 import org.kuali.hr.time.base.web.TkForm;
029 import org.kuali.hr.time.roles.TkUserRoles;
030 import org.kuali.hr.time.util.TKContext;
031 import org.kuali.hr.time.util.TKUser;
032 import org.kuali.rice.krad.exception.AuthorizationException;
033 import org.kuali.rice.krad.util.GlobalVariables;
034
035 public class TimeAction extends TkAction {
036
037 private static final Logger LOG = Logger.getLogger(TimeAction.class);
038
039 @Override
040 protected void checkTKAuthorization(ActionForm form, String methodToCall) throws AuthorizationException {
041 TkForm tkForm = (TkForm) form;
042
043 if (StringUtils.equals(methodToCall, "targetEmployee") || StringUtils.equals(methodToCall, "changeEmployee") || StringUtils.equals(methodToCall, "clearBackdoor") || StringUtils.equals(methodToCall, "clearChangeUser")) {
044 // Handle security validation in targetEmployee action, we may need
045 // to check the document for validity, since the user may not
046 // necessarily be a system administrator.
047 } else {
048 if (!TKContext.getUser().isSystemAdmin()
049 && !TKContext.getUser().isLocationAdmin()
050 && !TKContext.getUser().isDepartmentAdmin()
051 && !TKContext.getUser().isGlobalViewOnly()
052 && !TKContext.getUser().isDeptViewOnly()
053 && (tkForm.getDocumentId() != null && !TKContext.getUser().isApproverForTimesheet(tkForm.getDocumentId()))
054 && (tkForm.getDocumentId() != null && !TKContext.getUser().isDocumentReadable(tkForm.getDocumentId()))) {
055 throw new AuthorizationException("", "TimeAction", "");
056 }
057 }
058 }
059
060
061 @Override
062 public ActionForward execute(ActionMapping mapping, ActionForm form,
063 HttpServletRequest request, HttpServletResponse response)
064 throws Exception {
065 TKUser user = TKContext.getUser();
066 if (user != null) {
067 if (TKContext.getUser().isSystemAdmin()) {
068 return new ActionRedirect("/portal.do");
069 } else if (TKContext.getUser().isDepartmentAdmin()
070 && !user.isSynchronous()) {
071 return new ActionRedirect("/portal.do");
072 } else if (TKContext.getUser().isApprover()
073 && !user.isSynchronous()) {
074 return new ActionRedirect("/TimeApproval.do");
075 } else if (TKContext.getUser().isReviewer()
076 && !user.isSynchronous()) {
077 return new ActionRedirect("/TimeApproval.do");
078 } else if (user.isActiveEmployee()
079 && !user.isSynchronous()) {
080 return new ActionRedirect("/TimeDetail.do");
081 } else if (user.isSynchronous()) {
082 return new ActionRedirect("/Clock.do");
083 } else {
084 return new ActionRedirect("/PersonInfo.do");
085 }
086 }
087 return super.execute(mapping, form, request, response);
088 }
089
090 }