示例#1
0
        public void RunApplication(string[] args)
        {
            SetupCommandLine cmdLine = new SetupCommandLine();

            try
            {
                cmdLine.Parse(args);

                using (PersistenceScope scope = new PersistenceScope(PersistenceContextType.Update))
                {
                    ((IUpdateContext)PersistenceScope.CurrentContext).ChangeSetRecorder.OperationName = GetType().FullName;

                    // import authority tokens
                    AuthorityTokenImporter tokenImporter = new AuthorityTokenImporter();
                    IList <AuthorityToken> allTokens     = tokenImporter.ImportFromPlugins((IUpdateContext)PersistenceScope.CurrentContext);


                    // create the sys admin group, which has all tokens assigned by default
                    string[] tokenStrings = CollectionUtils.Map <AuthorityToken, string, List <string> >(allTokens,
                                                                                                         t => t.Name).ToArray();
                    AuthorityGroupDefinition adminGroupDef = new AuthorityGroupDefinition(cmdLine.SysAdminGroup, cmdLine.SysAdminGroup, false,
                                                                                          tokenStrings);
                    AuthorityGroupImporter groupImporter = new AuthorityGroupImporter();

                    IList <AuthorityGroup> groups =
                        groupImporter.Import(new AuthorityGroupDefinition[] { adminGroupDef }, (IUpdateContext)PersistenceScope.CurrentContext);

                    // find the admin group entity that was just created
                    AuthorityGroup adminGroup = CollectionUtils.SelectFirst(groups,
                                                                            g => g.Name == cmdLine.SysAdminGroup);

                    // create the "sa" user
                    CreateSysAdminUser(adminGroup, cmdLine, PersistenceScope.CurrentContext, Console.Out);

                    // optionally import other default authority groups defined in other plugins
                    if (cmdLine.ImportDefaultAuthorityGroups)
                    {
                        groupImporter.ImportFromPlugins((IUpdateContext)PersistenceScope.CurrentContext);
                    }

                    scope.Complete();
                }
            }
            catch (CommandLineException e)
            {
                Console.WriteLine(e.Message);
                cmdLine.PrintUsage(Console.Out);
            }
        }
        public AuthorityGroupDefinition[] GetAuthorityGroups()
        {
            //TODO: Load from XML instead

            AuthorityGroupDefinition admins = new AuthorityGroupDefinition(
                GetGroupName(DefaultUserGroup.PACSAdministrators),
                new string[]
            {
                #region Tokens
                ClearCanvas.Enterprise.Common.AuthorityTokens.Admin.Security.User,
                ClearCanvas.Enterprise.Common.AuthorityTokens.Admin.Security.AuthorityGroup,
                AuthorityTokens.Admin.Alert.Delete,
                AuthorityTokens.Admin.Alert.View,
                AuthorityTokens.Admin.ApplicationLog.Search,
                AuthorityTokens.Admin.Configuration.Devices,
                AuthorityTokens.Admin.Configuration.FileSystems,
                AuthorityTokens.Admin.Configuration.ServerPartitions,
                AuthorityTokens.Admin.Configuration.ServerRules,
                AuthorityTokens.Admin.Configuration.ServiceScheduling,
                AuthorityTokens.Admin.Configuration.PartitionArchive,

                AuthorityTokens.ArchiveQueue.Delete,
                AuthorityTokens.ArchiveQueue.Search,

                AuthorityTokens.RestoreQueue.Delete,
                AuthorityTokens.RestoreQueue.Search,

                AuthorityTokens.Study.Delete,
                AuthorityTokens.Study.Edit,
                AuthorityTokens.Study.Move,
                AuthorityTokens.Study.Restore,
                AuthorityTokens.Study.Search,
                AuthorityTokens.Study.View,
                AuthorityTokens.Study.ViewImages,
                AuthorityTokens.Study.Reprocess,

                AuthorityTokens.StudyIntegrityQueue.Search,
                AuthorityTokens.StudyIntegrityQueue.Reconcile,

                AuthorityTokens.ExternalRequestQueue.Search,
                AuthorityTokens.ExternalRequestQueue.Delete,

                AuthorityTokens.WorkQueue.Delete,
                AuthorityTokens.WorkQueue.Reprocess,
                AuthorityTokens.WorkQueue.Reschedule,
                AuthorityTokens.WorkQueue.Reset,
                AuthorityTokens.WorkQueue.Search,
                AuthorityTokens.WorkQueue.View,

                ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllStudies,
                ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions,
                #endregion
            });

            AuthorityGroupDefinition technologists = new AuthorityGroupDefinition(
                GetGroupName(DefaultUserGroup.PACSTechnologists),
                new string[]
            {
                #region Tokens
                //AuthorityTokens.Admin.Alert.Delete,
                //AuthorityTokens.Admin.Alert.View,
                //AuthorityTokens.Admin.ApplicationLog.Search,
                //AuthorityTokens.Admin.Configuration.Devices,
                //AuthorityTokens.Admin.Configuration.FileSystems,
                //AuthorityTokens.Admin.Configuration.ServerPartitions,
                //AuthorityTokens.Admin.Configuration.ServerRules,
                //AuthorityTokens.Admin.Configuration.ServiceScheduling,

                AuthorityTokens.ArchiveQueue.Delete,
                AuthorityTokens.ArchiveQueue.Search,

                AuthorityTokens.RestoreQueue.Delete,
                AuthorityTokens.RestoreQueue.Search,

                AuthorityTokens.Study.Delete,
                AuthorityTokens.Study.Edit,
                AuthorityTokens.Study.Move,
                AuthorityTokens.Study.Restore,
                AuthorityTokens.Study.Search,
                AuthorityTokens.Study.View,
                AuthorityTokens.Study.ViewImages,
                AuthorityTokens.Study.Reprocess,

                AuthorityTokens.StudyIntegrityQueue.Search,
                AuthorityTokens.StudyIntegrityQueue.Reconcile,

                AuthorityTokens.WorkQueue.Delete,
                AuthorityTokens.WorkQueue.Reprocess,
                AuthorityTokens.WorkQueue.Reschedule,
                AuthorityTokens.WorkQueue.Reset,
                AuthorityTokens.WorkQueue.Search,
                AuthorityTokens.WorkQueue.View,

                ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllStudies,
                ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions,
                #endregion
            });

            AuthorityGroupDefinition users = new AuthorityGroupDefinition(
                GetGroupName(DefaultUserGroup.PACSUsers),
                new string[]
            {
                #region Tokens
                //AuthorityTokens.Admin.Alert.Delete,
                //AuthorityTokens.Admin.Alert.View,
                //AuthorityTokens.Admin.ApplicationLog.Search,
                //AuthorityTokens.Admin.Configuration.Devices,
                //AuthorityTokens.Admin.Configuration.FileSystems,
                //AuthorityTokens.Admin.Configuration.ServerPartitions,
                //AuthorityTokens.Admin.Configuration.ServerRules,
                //AuthorityTokens.Admin.Configuration.ServiceScheduling,

                //AuthorityTokens.ArchiveQueue.Delete,
                AuthorityTokens.ArchiveQueue.Search,

                //AuthorityTokens.RestoreQueue.Delete,
                AuthorityTokens.RestoreQueue.Search,

                //AuthorityTokens.Study.Delete,
                //AuthorityTokens.Study.Edit,
                //AuthorityTokens.Study.Move,
                //AuthorityTokens.Study.Restore,
                AuthorityTokens.Study.Search,
                AuthorityTokens.Study.View,

                AuthorityTokens.StudyIntegrityQueue.Search,
                //AuthorityTokens.StudyIntegrityQueue.Reconcile,

                //AuthorityTokens.WorkQueue.Delete,
                //AuthorityTokens.WorkQueue.Reprocess,
                //AuthorityTokens.WorkQueue.Reschedule,
                //AuthorityTokens.WorkQueue.Reset,
                AuthorityTokens.WorkQueue.Search,
                AuthorityTokens.WorkQueue.View,

                ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllStudies,
                ClearCanvas.Enterprise.Common.AuthorityTokens.DataAccess.AllPartitions,
                #endregion
            });


            return(new AuthorityGroupDefinition[] { admins, technologists, users });
        }