예제 #1
0
        void IDFunction.SaveGroups(PermissionType permission)
        {
            checkValid();
            String mCommaSeporatedString = m_Profile.GetCommaSeparatedGroups(permission);
            string mStoreProcedure       = "ZGWSecurity.Set_Function_Groups";

            SqlParameter[] mParameters =
            {
                new SqlParameter("@P_Function_SeqID",               m_Profile.Id),
                new SqlParameter("@P_Security_Entity_SeqID",        m_SecurityEntitySeqId),
                new SqlParameter("@P_Groups",                       mCommaSeporatedString),
                new SqlParameter("@P_Permissions_NVP_Detail_SeqID", permission),
                new SqlParameter("@P_Added_Updated_By",             GetAddedUpdatedBy(m_Profile))
            };
            base.ExecuteNonQuery(mStoreProcedure, mParameters);
        }
예제 #2
0
        public IHttpActionResult Save(UIFunctionProfile uiProfile)
        {
            if (uiProfile == null)
            {
                throw new ArgumentNullException("uiProfile", "uiProfile cannot be a null reference (Nothing in Visual Basic)!");
            }
            string        mRetVal       = "false";
            MSecurityInfo mSecurityInfo = new MSecurityInfo(FunctionUtility.GetProfile(ConfigSettings.GetAppSettingValue("Actions_EditFunction", true)), AccountUtility.CurrentProfile());
            Logger        mLog          = Logger.Instance();

            if (HttpContext.Current.Items["EditId"] != null)
            {
                int mEditId = int.Parse(HttpContext.Current.Items["EditId"].ToString());
                if (mEditId == uiProfile.Id)
                {
                    MAccountProfile   mAccountProfile  = AccountUtility.CurrentProfile();
                    MFunctionProfile  profile          = new MFunctionProfile();
                    MDirectoryProfile directoryProfile = new MDirectoryProfile();
                    if (uiProfile.Id != -1)
                    {
                        if (!mSecurityInfo.MayEdit)
                        {
                            Exception mError = new Exception("The account (" + AccountUtility.CurrentProfile().Account + ") being used does not have the correct permissions to edit");
                            mLog.Error(mError);
                            return(this.InternalServerError(mError));
                        }
                        profile             = FunctionUtility.GetProfile(uiProfile.Id);
                        profile.UpdatedBy   = mAccountProfile.Id;
                        profile.UpdatedDate = DateTime.Now;
                    }
                    else
                    {
                        if (!mSecurityInfo.MayAdd)
                        {
                            Exception mError = new Exception("The account (" + AccountUtility.CurrentProfile().Account + ") being used does not have the correct permissions to add");
                            mLog.Error(mError);
                            return(this.InternalServerError(mError));
                        }
                        profile.AddedBy   = mAccountProfile.Id;
                        profile.AddedDate = DateTime.Now;
                    }
                    string viewCommaRoles   = String.Join(",", uiProfile.RolesAndGroups.ViewRoles);
                    string addCommaRoles    = String.Join(",", uiProfile.RolesAndGroups.AddRoles);
                    string editCommaRoles   = String.Join(",", uiProfile.RolesAndGroups.EditRoles);
                    string deleteCommaRoles = String.Join(",", uiProfile.RolesAndGroups.DeleteRoles);

                    string viewCommaGroups   = String.Join(",", uiProfile.RolesAndGroups.ViewGroups);
                    string addCommaGroups    = String.Join(",", uiProfile.RolesAndGroups.AddGroups);
                    string editCommaGroups   = String.Join(",", uiProfile.RolesAndGroups.EditGroups);
                    string deleteCommaGroups = String.Join(",", uiProfile.RolesAndGroups.DeleteGroups);

                    bool saveGroups = false;
                    bool saveRoles  = false;

                    if (profile.GetCommaSeparatedAssignedRoles(PermissionType.View) != viewCommaRoles)
                    {
                        profile.SetAssignedRoles(viewCommaRoles, PermissionType.View);
                        saveRoles = true;
                    }

                    if (profile.GetCommaSeparatedAssignedRoles(PermissionType.Add) != addCommaRoles)
                    {
                        profile.SetAssignedRoles(addCommaRoles, PermissionType.Add);
                        saveRoles = true;
                    }

                    if (profile.GetCommaSeparatedAssignedRoles(PermissionType.Edit) != editCommaRoles)
                    {
                        profile.SetAssignedRoles(editCommaRoles, PermissionType.Edit);
                        saveRoles = true;
                    }

                    if (profile.GetCommaSeparatedAssignedRoles(PermissionType.Delete) != deleteCommaRoles)
                    {
                        profile.SetAssignedRoles(deleteCommaRoles, PermissionType.Delete);
                        saveRoles = true;
                    }

                    if (profile.GetCommaSeparatedGroups(PermissionType.View) != viewCommaGroups)
                    {
                        profile.SetGroups(viewCommaGroups, PermissionType.View);
                        saveGroups = true;
                    }
                    if (profile.GetCommaSeparatedGroups(PermissionType.Add) != addCommaGroups)
                    {
                        profile.SetGroups(addCommaGroups, PermissionType.Add);
                        saveGroups = true;
                    }
                    if (profile.GetCommaSeparatedGroups(PermissionType.Edit) != editCommaGroups)
                    {
                        profile.SetGroups(editCommaGroups, PermissionType.Edit);
                        saveGroups = true;
                    }
                    if (profile.GetCommaSeparatedGroups(PermissionType.Delete) != deleteCommaGroups)
                    {
                        profile.SetGroups(deleteCommaGroups, PermissionType.Delete);
                        saveGroups = true;
                    }
                    profile.Action = uiProfile.Action;
                    profile.EnableNotifications = uiProfile.EnableNotifications;
                    profile.EnableViewState     = uiProfile.EnableViewState;
                    profile.FunctionTypeSeqId   = uiProfile.FunctionTypeSeqID;
                    profile.Id                  = uiProfile.Id;
                    profile.IsNavigable         = uiProfile.IsNav;
                    profile.LinkBehavior        = uiProfile.LinkBehavior;
                    profile.MetaKeywords        = uiProfile.MetaKeyWords;
                    profile.Name                = uiProfile.Name;
                    profile.NavigationTypeSeqId = uiProfile.NavigationTypeSeqId;
                    profile.Notes               = uiProfile.Notes;
                    profile.NoUI                = uiProfile.NoUI;
                    profile.ParentId            = uiProfile.ParentID;
                    profile.Source              = uiProfile.Source;
                    profile.Description         = uiProfile.Description;
                    profile.RedirectOnTimeout   = uiProfile.RedirectOnTimeout;
                    FunctionUtility.Save(profile, saveGroups, saveRoles);
                    profile          = FunctionUtility.GetProfile(uiProfile.Action);
                    directoryProfile = DirectoryUtility.GetProfile(profile.Id);
                    if (!String.IsNullOrEmpty(uiProfile.DirectoryData.Directory))
                    {
                        if (directoryProfile == null)
                        {
                            directoryProfile = new MDirectoryProfile();
                        }
                        directoryProfile.FunctionSeqId       = profile.Id;
                        directoryProfile.Directory           = uiProfile.DirectoryData.Directory;
                        directoryProfile.Impersonate         = uiProfile.DirectoryData.Impersonate;
                        directoryProfile.ImpersonateAccount  = uiProfile.DirectoryData.ImpersonateAccount;
                        directoryProfile.ImpersonatePassword = uiProfile.DirectoryData.ImpersonatePassword;
                        directoryProfile.Name      = uiProfile.DirectoryData.Directory;
                        directoryProfile.UpdatedBy = mAccountProfile.Id;
                        DirectoryUtility.Save(directoryProfile);
                    }
                    else
                    {
                        if (directoryProfile != null)
                        {
                            directoryProfile.Directory = "";
                            directoryProfile.Name      = "";
                            DirectoryUtility.Save(directoryProfile);
                        }
                    }
                    AccountUtility.RemoveInMemoryInformation(true);
                    mRetVal = "true";
                }
                else
                {
                    Exception mError = new Exception("Identifier you have last looked at does not match the one passed in nothing has been saved!!!!");
                    mLog.Error(mError);
                    return(this.InternalServerError(mError));
                }
            }
            else
            {
                Exception mError = new Exception("Identifier could not be determined, nothing has been saved!!!!");
                mLog.Error(mError);
                return(this.InternalServerError(mError));
            }
            return(Ok(mRetVal));
        }