/// <summary> /// 获取指定用户Id的审批角色列表 /// </summary> /// <param name="workflowName">工作流名称</param> /// <param name="userId">用户Id</param> /// <returns>用户所在的审批角色</returns> public static List <ApprovalRole> GetUserRoles(string workflowName, string userId) { List <ApprovalRole> rolesList = new List <ApprovalRole>(); //如果用户id为空,那么返回空角色集合 if (string.IsNullOrEmpty(userId)) { return(rolesList); } IUserInRole userInRole = WorkflowRuntime.Current.GetService <IIdentityService>().GetUserInRole(); StateMachineWorkflow workflow = (StateMachineWorkflow)WorkflowRuntime.Current.GetService <IWorkFlowDefinePersistService>().GetWorkflowDefine(workflowName); foreach (ApprovalRole approvalRole in workflow.Roles) { if (userInRole.IsUserInRole(userId, approvalRole.Name)) { if (!rolesList.Contains(approvalRole)) { rolesList.Add(approvalRole); } } } return(rolesList); }
/// <summary> /// Determines whether the specified user id is authorized. /// </summary> /// <param name="userId">The user id.</param> /// <param name="approvalEvent">The approval event.</param> /// <param name="isOwner">if set to <c>true</c> [is owner].</param> /// <param name="role">The role.</param> /// <returns> /// <c>true</c> if the specified user id is authorized; otherwise, <c>false</c>. /// </returns> public virtual bool IsAuthorized(string userId, ApprovalEvent approvalEvent, bool isOwner, EventRole role) { IUserInRole userInRole = WorkflowRuntime.Current.GetService <IIdentityService>().GetUserInRole(); return(userInRole.IsUserInRole(userId, role.Name) && ((isOwner && approvalEvent.Authorization == Authorization.OwnerOnly.ToString()) || (!isOwner && approvalEvent.Authorization == Authorization.DenyOwner.ToString()) || approvalEvent.Authorization == Authorization.All.ToString())); }