예제 #1
0
        private void SaveRecord()
        {
            try
            {
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                switch (_Mode)
                {
                case Mode.Create:
                    _Application = _Store.CreateApplication(txtName.Text.Trim(), txtDescription.Text);
                    break;

                case Mode.Update:
                    _Application.Rename(this.txtName.Text.Trim());
                    _Application.Update(this.txtDescription.Text.Trim());
                    _Storage.CommitTransaction();
                    break;
                }
                _Storage.CommitTransaction();
            }
            catch (Exception ex)
            {
                _Storage.RollBackTransaction();
                throw ex;
            }
        }
예제 #2
0
        private void Common_DeleteRecord(ListView listview, bool isMember = true)
        {
            if (listview.SelectedItem != null)
            {
                var item = listview.SelectedItem;

                try
                {
                    _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

                    var sid = item.SubItems[2].Text;
                    var mbr = isMember ?
                              _Members.Where(x => x.SID.ToString() == sid).FirstOrDefault() :
                              _NonMembers.Where(x => x.SID.ToString() == sid).FirstOrDefault();

                    if (mbr != null)
                    {
                        _StoreGroup.GetStoreGroupMember(mbr.SID).Delete();
                    }

                    _Storage.CommitTransaction();
                }
                catch (Exception ex)
                {
                    _Storage.RollBackTransaction();
                    throw (ex);
                }
            }
        }
예제 #3
0
        private void SaveRecord()
        {
            try
            {
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                foreach (ListViewItem item in lvwStoreGroups.Items)
                {
                    #region update checked items only, not selected
                    if (item.Checked)
                    {
                        _SelectedItems.Add(item);

                        #region 立即 save
                        IAzManStoreGroup sg = _Store.GetStoreGroup(item.SubItems[0].Text);
                        _StoreGroup.CreateStoreGroupMember(sg.SID, WhereDefined.Store, _IsMember);
                        #endregion
                    }
                    #endregion
                }
                _Storage.CommitTransaction();
            }
            catch (Exception ex)
            {
                _Storage.RollBackTransaction();
                throw (ex);
            }
        }
예제 #4
0
        private void SaveRecord()
        {
            _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
            foreach (ListViewItem item in lvwStoreGroups.Items)
            {
                #region update checked items only, not selected
                if (item.Checked)
                {
                    _SelectedItems.Add(item);

                    #region 立即 save
                    IAzManStoreGroup    storeGroup = _Store.GetStoreGroup(item.SubItems[0].Text);
                    IAzManAuthorization auth       = _AuthItem.CreateAuthorization(
                        new SqlAzManSID(storeGroup.SID.ToString(), this._CurrentOwnerSidWhereDefined == WhereDefined.Store),
                        this._CurrentOwnerSidWhereDefined,
                        new SqlAzManSID(storeGroup.SID.ToString(), true),
                        WhereDefined.Store,
                        AuthorizationType.Neutral,
                        null,
                        null);
                    #endregion
                }
                #endregion
            }
            _Storage.CommitTransaction();
        }
예제 #5
0
        public DialogResult ShowDialog(IWin32Window owner, string fileName, object importIntoObject, bool chkUsersAndGroups, bool chkDBUsers, bool chkAuthorizations, SqlAzManMergeOptions mergeOptions)
        {
            this.DialogResult = DialogResult.None;
            this.TopMost      = true;
            this.Show(owner);
            /*Application.DoEvents();*/
            XmlDocument doc = new XmlDocument();

            doc.Load(fileName);
            XmlNode xmlStartNode;

            if (this.checkScopeNodePosition(doc, ref importIntoObject, out xmlStartNode))
            {
                IAzManStorage storage = this.getStorageReference(importIntoObject);
                try
                {
                    storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                    ((IAzManImport)importIntoObject).ImportChildren(xmlStartNode, chkUsersAndGroups, chkDBUsers, chkAuthorizations, mergeOptions);
                    storage.CommitTransaction();
                    this.Hide();
                    return(this.DialogResult = DialogResult.OK);
                }
                catch
                {
                    storage.RollBackTransaction();
                    this.DialogResult = DialogResult.Cancel;
                    this.Hide();
                    throw;
                }
            }
            else
            {
                return(this.DialogResult = DialogResult.Cancel);
            }
        }
예제 #6
0
        private void SaveRecord()
        {
            var key   = txtKey.Text.Trim();
            var value = txtValue.Text.Trim();

            if (key != String.Empty && value != String.Empty)
            {
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

                switch (_Mode)
                {
                case Mode.Create:
                    _AzManItem.CreateAttribute(key, value);
                    break;

                case Mode.Delete:
                    break;

                case Mode.Update:
                    _AzManItem.GetAttribute(key).Update(key, value);
                    break;
                }

                _Storage.CommitTransaction();

                _Dirty = true;
            }
        }
예제 #7
0
        private void SaveRecord()
        {
            try
            {
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                foreach (ListViewItem item in lvwStoreGroups.Items)
                {
                    #region update checked items only, not selected
                    if (item.Checked)
                    {
                        _SelectedItems.Add(item);

                        if (_ApplicationGroup != null)
                        {
                            #region 立即 save
                            IAzManDBUser dbUser = _Storage.GetDBUser(item.SubItems[0].Text);
                            _ApplicationGroup.CreateApplicationGroupMember(dbUser.CustomSid, WhereDefined.Database, _IsMember);
                            #endregion
                        }
                    }
                    #endregion
                }
                _Storage.CommitTransaction();
            }
            catch (Exception ex)
            {
                _Storage.RollBackTransaction();
                throw (ex);
            }
        }
예제 #8
0
        private void SaveRecord()
        {
            var keypair  = (KeyValuePair <int, String>)cboAuthType.SelectedItem;
            var authType = (AuthorizationType)Enum.Parse(typeof(AuthorizationType), keypair.Value);

            DateTime?validFrom = null;

            if (datValidFrom.Checked)
            {
                validFrom = datValidFrom.Value;
            }
            DateTime?validTo = null;

            if (datValidFrom.Checked)
            {
                validTo = datValidTo.Value;
            }

            _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

            var item = _AuthItem.GetAuthorization(_AuthorizationID);

            item.Update(item.Owner, item.SID, item.SidWhereDefined,
                        authType,
                        validFrom,
                        validTo
                        );

            _Storage.CommitTransaction();

            _Dirty = true;
        }
예제 #9
0
        private void SaveRecord()
        {
            _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
            foreach (ListViewItem item in lvwItemList.Items)
            {
                #region update checked items only, not selected
                if (item.Checked)
                {
                    _SelectedItems.Add(item);

                    #region 立即 save
                    try
                    {
                        IAzManItem member = _Application.GetItem(item.SubItems[0].Text);

                        _AuthItem.AddMember(member);
                    }
                    catch (Exception ex)
                    {
                        //throw (ex);
                        MessageBox.Show(ex.Message, "Error Found", MessageBoxButtons.OK, MessageBoxIcon.Error, new EventHandler(ErrorPrompt));
                        //MessageBox.Show(ex.Message, "Error Found");
                    }
                    #endregion
                }
                #endregion
            }
            _Storage.CommitTransaction();
            MessageBox.Show("Error Found");
        }
예제 #10
0
        private void Common_DeleteRecord(ListView listview)
        {
            if (listview.SelectedItem != null)
            {
                var item = listview.SelectedItem;

                try
                {
                    _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

                    IAzManItem member = _Application.GetItem(item.SubItems[0].Text);
                    _Task.RemoveMember(member);

                    _Storage.CommitTransaction();
                }
                catch { }
            }
        }
예제 #11
0
 private void SaveRecord()
 {
     try
     {
         _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
         _Application.CreateItem(txtName.Text.Trim(), txtDescription.Text, ItemType.Operation);
         _Storage.CommitTransaction();
         _IsDirty = true;
     }
     catch (Exception ex)
     {
         _Storage.RollBackTransaction();
         throw ex;
     }
 }
예제 #12
0
        private void SaveRecord()
        {
            switch (_Mode)
            {
            case Mode.Create:
                //_Application = _Store.CreateApplication(txtName.Text.Trim(), txtDescription.Text);
                break;

            case Mode.Update:
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                //_Application.Rename(this.txtName.Text.Trim());
                //_Application.Update(this.txtDescription.Text.Trim());
                _Storage.CommitTransaction();
                break;
            }
        }
        private void SaveRecord()
        {
            _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
            foreach (ListViewItem item in lvwStoreGroups.Items)
            {
                #region update checked items only, not selected
                if (item.Checked)
                {
                    _SelectedItems.Add(item);

                    #region 立即 save
                    IAzManApplicationGroup ag = _Application.GetApplicationGroup(item.SubItems[0].Text);
                    _ApplicationGroup.CreateApplicationGroupMember(ag.SID, WhereDefined.Application, _IsMember);
                    #endregion
                }
                #endregion
            }
            _Storage.CommitTransaction();
        }
예제 #14
0
        private void DeleteRecord()
        {
            if (listView.SelectedItem != null)
            {
                try
                {
                    var item = listView.SelectedItem;

                    _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

                    var sg = _Storage[_Store.Name].GetStoreGroup(item.Text.Trim());
                    sg.Delete();

                    _Storage.CommitTransaction();

                    listView_Load();
                }
                catch { }
            }
        }
예제 #15
0
        private void SaveRecord()
        {
            try
            {
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

                IAzManStoreGroup storeGroup = _Store.CreateStoreGroup(
                    SqlAzManSID.NewSqlAzManSid(),
                    txtName.Text.Trim(),
                    txtDescription.Text.Trim(),
                    String.Empty,
                    (radBasic.Checked ? GroupType.Basic : GroupType.LDapQuery));

                _Storage.CommitTransaction();
                _IsDirty = true;
            }
            catch (Exception ex)
            {
                _Storage.RollBackTransaction();
                throw ex;
            }
        }
예제 #16
0
        public void doImport(object importIntoObject, bool chkUsersAndGroups, bool chkDBUsers, bool chkAuthorizations, SqlAzManMergeOptions mergeOptions)
        {
            XmlDocument doc = new XmlDocument();

            doc.Load(_UploadedFiles[0]);
            XmlNode xmlStartNode;

            if (this.checkScopeNodePosition(doc, ref importIntoObject, out xmlStartNode))
            {
                try
                {
                    _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                    ((IAzManImport)importIntoObject).ImportChildren(
                        xmlStartNode, chkUsersAndGroups, chkDBUsers, chkAuthorizations, mergeOptions);
                    _Storage.CommitTransaction();
                }
                catch
                {
                    _Storage.RollBackTransaction();
                    throw;
                }
            }
        }
예제 #17
0
        private void ImportFromAzMan(string azManStorePath, string netSqlAzManStoreName)
        {
            Microsoft.Interop.Security.AzRoles.AzAuthorizationStore azstore = null;
            string tempFileName = Path.Combine(Environment.GetEnvironmentVariable("temp", EnvironmentVariableTarget.Machine), String.Format("AzMan{0}.xml", Guid.NewGuid()));

            try
            {
                this.storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);
                string      storeDescription = String.Format("Store imported from AzMan Store:" + " ({0}) - {1}", azManStorePath, DateTime.Now.ToString());
                IAzManStore store            = this.storage.CreateStore(netSqlAzManStoreName, storeDescription);
                azstore = new AzAuthorizationStoreClass();
                if (this.rbtStoreFile.Checked)
                {
                    this.FileUpload1.SaveAs(tempFileName);
                    azManStorePath = String.Format("msxml://{0}", tempFileName);
                }
                azstore.Initialize(2, azManStorePath, null);
                #region Store Groups
                //Store Groups
                foreach (IAzApplicationGroup azStoreGroup in azstore.ApplicationGroups)
                {
                    //Store Groups Definition
                    if (azStoreGroup.Type == (int)tagAZ_PROP_CONSTANTS.AZ_GROUPTYPE_BASIC)
                    {
                        //Basic
                        store.CreateStoreGroup(SqlAzManSID.NewSqlAzManSid(), azStoreGroup.Name, azStoreGroup.Description, String.Empty, GroupType.Basic);
                    }
                    else if (azStoreGroup.Type == (int)tagAZ_PROP_CONSTANTS.AZ_GROUPTYPE_LDAP_QUERY)
                    {
                        //LDap
                        store.CreateStoreGroup(SqlAzManSID.NewSqlAzManSid(), azStoreGroup.Name, azStoreGroup.Description, azStoreGroup.LdapQuery, GroupType.LDapQuery);
                    }
                }
                //Store Groups Members
                foreach (IAzApplicationGroup azStoreGroup in azstore.ApplicationGroups)
                {
                    if (azStoreGroup.Type == (int)tagAZ_PROP_CONSTANTS.AZ_GROUPTYPE_BASIC)
                    {
                        //Basic
                        IAzManStoreGroup storeGroup = store.GetStoreGroup(azStoreGroup.Name);
                        //Store Group Members - Members Store Group
                        object[] azStoreGroupMembers = azStoreGroup.AppMembers as object[];
                        if (azStoreGroupMembers != null)
                        {
                            foreach (string azStoreGroupMember in azStoreGroupMembers)
                            {
                                IAzManStoreGroup member = store.GetStoreGroup(azStoreGroupMember);
                                storeGroup.CreateStoreGroupMember(member.SID, WhereDefined.Store, true);
                            }
                        }
                        //Store Group Non-Members - Non-Members Store Group
                        object[] azStoreGroupNonMembers = azStoreGroup.AppNonMembers as object[];
                        if (azStoreGroupNonMembers != null)
                        {
                            foreach (string azStoreGroupNonMember in azStoreGroupNonMembers)
                            {
                                IAzManStoreGroup nonMember = store.GetStoreGroup(azStoreGroupNonMember);
                                storeGroup.CreateStoreGroupMember(nonMember.SID, WhereDefined.Store, false);
                            }
                        }
                        //Store Group Members - Windows NT Account
                        object[] azStoreGroupWindowsMembers = azStoreGroup.Members as object[];
                        if (azStoreGroupWindowsMembers != null)
                        {
                            foreach (string azStoreWindowsMember in azStoreGroupWindowsMembers)
                            {
                                IAzManSid sid = new SqlAzManSID(azStoreWindowsMember);

                                string memberName;
                                bool   isLocal;
                                DirectoryServicesWebUtils.GetMemberInfo(sid.StringValue, out memberName, out isLocal);
                                storeGroup.CreateStoreGroupMember(sid, isLocal ? WhereDefined.Local : WhereDefined.LDAP, true);
                            }
                        }
                        //Store Group NonMembers - Windows NT Account
                        object[] azStoreGroupWindowsNonMembers = azStoreGroup.NonMembers as object[];
                        if (azStoreGroupWindowsNonMembers != null)
                        {
                            foreach (string azStoreWindowsNonMember in azStoreGroupWindowsNonMembers)
                            {
                                IAzManSid sid = new SqlAzManSID(azStoreWindowsNonMember);
                                string    memberName;
                                bool      isLocal;
                                DirectoryServicesWebUtils.GetMemberInfo(sid.StringValue, out memberName, out isLocal);
                                storeGroup.CreateStoreGroupMember(sid, isLocal ? WhereDefined.Local : WhereDefined.LDAP, false);
                            }
                        }
                    }
                }
                #endregion Store Groups
                #region Applications
                //Applications
                foreach (IAzApplication azApplication in azstore.Applications)
                {
                    IAzManApplication application = store.CreateApplication(azApplication.Name, azApplication.Description);
                    #region Application Groups
                    //Store Groups
                    foreach (IAzApplicationGroup azApplicationGroup in azApplication.ApplicationGroups)
                    {
                        //Application Groups Definition
                        if (azApplicationGroup.Type == (int)tagAZ_PROP_CONSTANTS.AZ_GROUPTYPE_BASIC)
                        {
                            //Basic
                            application.CreateApplicationGroup(SqlAzManSID.NewSqlAzManSid(), azApplicationGroup.Name, azApplicationGroup.Description, String.Empty, GroupType.Basic);
                        }
                        else if (azApplicationGroup.Type == (int)tagAZ_PROP_CONSTANTS.AZ_GROUPTYPE_LDAP_QUERY)
                        {
                            //LDap
                            application.CreateApplicationGroup(SqlAzManSID.NewSqlAzManSid(), azApplicationGroup.Name, azApplicationGroup.Description, azApplicationGroup.LdapQuery, GroupType.LDapQuery);
                        }
                    }
                    //Application Groups Members
                    foreach (IAzApplicationGroup azApplicationGroup in azApplication.ApplicationGroups)
                    {
                        if (azApplicationGroup.Type == (int)tagAZ_PROP_CONSTANTS.AZ_GROUPTYPE_BASIC)
                        {
                            //Basic
                            IAzManApplicationGroup applicationGroup = application.GetApplicationGroup(azApplicationGroup.Name);
                            //Application Group Members - Members Group
                            object[] azStoreGroupMembers = azApplicationGroup.AppMembers as object[];
                            if (azStoreGroupMembers != null)
                            {
                                foreach (string azGroupMember in azStoreGroupMembers)
                                {
                                    IAzManStoreGroup storemember;
                                    try
                                    {
                                        storemember = store.GetStoreGroup(azGroupMember);
                                    }
                                    catch (SqlAzManException)
                                    {
                                        storemember = null;
                                    }
                                    IAzManApplicationGroup appmember;
                                    try
                                    {
                                        appmember = application.GetApplicationGroup(azGroupMember);
                                    }
                                    catch (SqlAzManException)
                                    {
                                        appmember = null;
                                    }
                                    if (storemember != null)
                                    {
                                        applicationGroup.CreateApplicationGroupMember(storemember.SID, WhereDefined.Store, true);
                                    }
                                    else
                                    {
                                        applicationGroup.CreateApplicationGroupMember(appmember.SID, WhereDefined.Application, true);
                                    }
                                }
                            }
                            //Application Group Non-Members - Non-Members Group
                            object[] azStoreGroupNonMembers = azApplicationGroup.AppNonMembers as object[];
                            if (azStoreGroupNonMembers != null)
                            {
                                foreach (string azGroupNonMember in azStoreGroupNonMembers)
                                {
                                    IAzManStoreGroup storenonMember;
                                    try
                                    {
                                        storenonMember = store.GetStoreGroup(azGroupNonMember);
                                    }
                                    catch (SqlAzManException)
                                    {
                                        storenonMember = null;
                                    }
                                    IAzManApplicationGroup appnonMember;
                                    try
                                    {
                                        appnonMember = application.GetApplicationGroup(azGroupNonMember);
                                    }
                                    catch (SqlAzManException)
                                    {
                                        appnonMember = null;
                                    }
                                    if (storenonMember != null)
                                    {
                                        applicationGroup.CreateApplicationGroupMember(storenonMember.SID, WhereDefined.Store, false);
                                    }
                                    else
                                    {
                                        applicationGroup.CreateApplicationGroupMember(appnonMember.SID, WhereDefined.Application, false);
                                    }
                                }
                            }
                            //Application Group Members - Windows NT Account
                            object[] azApplicationGroupWindowsMembers = azApplicationGroup.Members as object[];
                            if (azApplicationGroupWindowsMembers != null)
                            {
                                foreach (string azApplicationWindowsMember in azApplicationGroupWindowsMembers)
                                {
                                    IAzManSid sid = new SqlAzManSID(azApplicationWindowsMember);
                                    string    memberName;
                                    bool      isLocal;
                                    DirectoryServicesWebUtils.GetMemberInfo(sid.StringValue, out memberName, out isLocal);
                                    applicationGroup.CreateApplicationGroupMember(sid, isLocal ? WhereDefined.Local : WhereDefined.LDAP, true);
                                }
                            }
                            //Application Group NonMembers - Windows NT Account
                            object[] azApplicationGroupWindowsNonMembers = azApplicationGroup.NonMembers as object[];
                            if (azApplicationGroupWindowsNonMembers != null)
                            {
                                foreach (string azApplicationWindowsNonMember in azApplicationGroupWindowsNonMembers)
                                {
                                    IAzManSid sid = new SqlAzManSID(azApplicationWindowsNonMember);
                                    string    memberName;
                                    bool      isLocal;
                                    DirectoryServicesWebUtils.GetMemberInfo(sid.StringValue, out memberName, out isLocal);
                                    applicationGroup.CreateApplicationGroupMember(sid, isLocal ? WhereDefined.Local : WhereDefined.LDAP, false);
                                }
                            }
                        }
                    }
                    #endregion Application Groups
                    //Without Scopes
                    IAzTasks tasks = azApplication.Tasks as IAzTasks;
                    if (tasks != null)
                    {
                        foreach (IAzTask azTask in tasks)
                        {
                            if (azTask.IsRoleDefinition == 1)
                            {
                                IAzManItem item = application.CreateItem(azTask.Name, azTask.Description, ItemType.Role);
                            }
                            else
                            {
                                IAzManItem item = application.CreateItem(azTask.Name, azTask.Description, ItemType.Task);
                            }
                        }
                    }
                    IAzOperations operations = azApplication.Operations as IAzOperations;
                    if (operations != null)
                    {
                        foreach (IAzOperation azOperation in operations)
                        {
                            application.CreateItem(azOperation.Name, azOperation.Description, ItemType.Operation);
                        }
                    }
                    //Build Item Hierarchy
                    if (tasks != null)
                    {
                        foreach (IAzTask azTask in tasks)
                        {
                            this.SetHirearchy(null, azApplication, azTask.Name, application);
                        }
                    }
                    //Scopes
                    foreach (IAzScope azScope in azApplication.Scopes)
                    {
                        azApplication.OpenScope(azScope.Name, null);
                        IAzTasks tasksOfScope = azScope.Tasks as IAzTasks;
                        if (tasksOfScope != null)
                        {
                            foreach (IAzTask azTask in tasksOfScope)
                            {
                                if (azTask.IsRoleDefinition == 1)
                                {
                                    IAzManItem item = application.CreateItem(azTask.Name, azTask.Description, ItemType.Role);
                                }
                                else
                                {
                                    IAzManItem item = application.CreateItem(azTask.Name, azTask.Description, ItemType.Task);
                                }
                            }
                        }
                        //Build Item Hierarchy
                        if (tasksOfScope != null)
                        {
                            foreach (IAzTask azTask in tasksOfScope)
                            {
                                this.SetHirearchy(azScope, azApplication, azTask.Name, application);
                            }
                        }
                    }
                    //Authorizations on Roles without Scopes
                    AuthorizationType defaultAuthorization = AuthorizationType.AllowWithDelegation;
                    IAzRoles          azRoles = azApplication.Roles;
                    foreach (IAzRole azRole in azRoles)
                    {
                        IAzManItem item;
                        try
                        {
                            item = application.GetItem(azRole.Name);
                        }
                        catch (SqlAzManException)
                        {
                            item = null;
                        }
                        if (item == null)
                        {
                            item = application.CreateItem(azRole.Name, azRole.Description, ItemType.Role);
                        }
                        //Store & Application Groups Authorizations
                        foreach (string member in (object[])azRole.AppMembers)
                        {
                            IAzManStoreGroup storeGroup;
                            try
                            {
                                storeGroup = application.Store.GetStoreGroup(member);
                            }
                            catch (SqlAzManException)
                            {
                                storeGroup = null;
                            }
                            IAzManApplicationGroup applicationGroup;
                            try
                            {
                                applicationGroup = application.GetApplicationGroup(member);
                            }
                            catch (SqlAzManException)
                            {
                                applicationGroup = null;
                            }
                            if (storeGroup != null)
                            {
                                item.CreateAuthorization(this.currentOwnerSid, this.currentOwnerSidWhereDefined, storeGroup.SID, WhereDefined.Store, defaultAuthorization, null, null);
                            }
                            else if (applicationGroup != null)
                            {
                                item.CreateAuthorization(this.currentOwnerSid, this.currentOwnerSidWhereDefined, applicationGroup.SID, WhereDefined.Application, defaultAuthorization, null, null);
                            }
                        }
                        //Windows Users & Groups Authorizations
                        foreach (string sSid in (object[])azRole.Members)
                        {
                            IAzManSid sid = new SqlAzManSID(sSid);
                            string    memberName;
                            bool      isLocal;
                            DirectoryServicesWebUtils.GetMemberInfo(sid.StringValue, out memberName, out isLocal);
                            item.CreateAuthorization(this.currentOwnerSid, this.currentOwnerSidWhereDefined, sid, isLocal ? WhereDefined.Local : WhereDefined.LDAP, defaultAuthorization, null, null);
                        }
                    }
                    //Authorizations on Roles with Scopes
                    foreach (IAzScope azScope in azApplication.Scopes)
                    {
                        IAzRoles azRolesWithScopes = azScope.Roles;
                        foreach (IAzRole azRole in azRolesWithScopes)
                        {
                            IAzManItem item;
                            try
                            {
                                item = application.GetItem(azRole.Name);
                            }
                            catch (SqlAzManException)
                            {
                                item = null;
                            }
                            if (item == null)
                            {
                                item = application.CreateItem(azRole.Name, azRole.Description, ItemType.Role);
                            }
                            //Store & Application Groups Authorizations
                            foreach (string member in (object[])azRole.AppMembers)
                            {
                                IAzManStoreGroup storeGroup;
                                try
                                {
                                    storeGroup = application.Store.GetStoreGroup(member);
                                }
                                catch (SqlAzManException)
                                {
                                    storeGroup = null;
                                }
                                IAzManApplicationGroup applicationGroup;
                                try
                                {
                                    applicationGroup = application.GetApplicationGroup(member);
                                }
                                catch (SqlAzManException)
                                {
                                    applicationGroup = null;
                                }
                                if (storeGroup != null)
                                {
                                    item.CreateAuthorization(this.currentOwnerSid, this.currentOwnerSidWhereDefined, storeGroup.SID, WhereDefined.Store, defaultAuthorization, null, null);
                                }
                                else if (applicationGroup != null)
                                {
                                    item.CreateAuthorization(this.currentOwnerSid, this.currentOwnerSidWhereDefined, applicationGroup.SID, WhereDefined.Application, defaultAuthorization, null, null);
                                }
                            }
                            //Windows Users & Groups Authorizations
                            foreach (string sSid in (object[])azRole.Members)
                            {
                                IAzManSid sid = new SqlAzManSID(sSid);
                                string    memberName;
                                bool      isLocal;
                                DirectoryServicesWebUtils.GetMemberInfo(sid.StringValue, out memberName, out isLocal);
                                item.CreateAuthorization(this.currentOwnerSid, this.currentOwnerSidWhereDefined, sid, isLocal ? WhereDefined.Local : WhereDefined.LDAP, defaultAuthorization, null, null);
                            }
                        }
                    }
                    //try
                    //{
                    //    azstore.CloseApplication(azApplication.Name, 0);
                    //}
                    //catch
                    //{
                    //    //PorkAround: COM Is a mistery
                    //}
                }
                #endregion Applications
                if (storage.TransactionInProgress)
                {
                    storage.CommitTransaction();
                }
            }
            catch
            {
                if (storage.TransactionInProgress)
                {
                    storage.RollBackTransaction();
                }
                throw;
            }
            finally
            {
                if (azstore != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(azstore);
                    File.Delete(tempFileName);
                    azstore = null;
                }
            }
        }
예제 #18
0
        private void SaveRecord()
        {
            try
            {
                _Storage.OpenConnection();
                _Storage.BeginTransaction(AzManIsolationLevel.ReadUncommitted);

                #region  Managers
                KeyValuePair <string, bool>[] managers = _Store.GetManagers();
                foreach (CheckBox sqlLogin in flpManagers.Controls)
                {
                    if (sqlLogin.Checked)
                    {
                        if (!FindLogin(managers, sqlLogin.Text))
                        {
                            _Store.GrantAccessAsManager(sqlLogin.Text);
                        }
                    }
                    else
                    {
                        if (FindLogin(managers, sqlLogin.Text))
                        {
                            _Store.RevokeAccessAsManager(sqlLogin.Text);
                        }
                    }
                }
                #endregion

                #region Users
                KeyValuePair <string, bool>[] users = _Store.GetUsers();
                foreach (CheckBox sqlLogin in flpUsers.Controls)
                {
                    if (sqlLogin.Checked)
                    {
                        if (!FindLogin(users, sqlLogin.Text))
                        {
                            _Store.GrantAccessAsUser(sqlLogin.Text);
                        }
                    }
                    else
                    {
                        if (FindLogin(users, sqlLogin.Text))
                        {
                            _Store.RevokeAccessAsUser(sqlLogin.Text);
                        }
                    }
                }
                #endregion

                #region Readers
                KeyValuePair <string, bool>[] readers = _Store.GetReaders();
                foreach (CheckBox sqlLogin in flpReaders.Controls)
                {
                    if (sqlLogin.Checked)
                    {
                        if (!FindLogin(readers, sqlLogin.Text))
                        {
                            _Store.GrantAccessAsReader(sqlLogin.Text);
                        }
                    }
                    else
                    {
                        if (FindLogin(readers, sqlLogin.Text))
                        {
                            _Store.RevokeAccessAsReader(sqlLogin.Text);
                        }
                    }
                }
                #endregion

                _Storage.CommitTransaction();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                _Storage.CloseConnection();
            }
            _Dirty = true;
        }