Example #1
0
        public Core.DomainModel.Account GetAccountByNickName(string NickName)
        {
            Core.DomainModel.Account account = null;

            string sqlCommandText = ModuleConfiguration.SQL_CMD_SelectAccountByNickName;

            IList <IDictionary <string, object> > dbResult = this.dmlOperable.ExeReader(sqlCommandText, new Dictionary <string, object>()
            {
                { "@NickName", NickName }
            });

            if (dbResult != null && dbResult.Count == 1)
            {
                int gender = 0;

                account = new Core.DomainModel.Account()
                {
                    ID        = (string)dbResult[0]["Id"],
                    Name      = (string)dbResult[0]["Name"],
                    Address   = (string)dbResult[0]["Address"],
                    BirthDate = (DateTime?)dbResult[0]["BirthDate"],
                    Email     = (string)dbResult[0]["Email"],
                    FirstName = (string)dbResult[0]["FirstName"],
                    LastName  = (string)dbResult[0]["LastName"],
                    Gender    = dbResult[0]["Gender"] == null ? 0 : int.TryParse(dbResult[0]["Gender"].ToString(), out gender) ? gender : 0, //dbResult[0]["Gender"] is null ? 0 :int.Parse(dbResult[0]["Gender"].ToString()),
                    Mobile    = (string)dbResult[0]["Mobile"],
                    NickName  = (string)dbResult[0]["NickName"],
                    SID       = (string)dbResult[0]["SID"],
                    Title     = (string)dbResult[0]["Title"],
                    ZipCode   = (string)dbResult[0]["ZipCode"],
                    HeadImage = new Attachment()
                    {
                        ID = (string)dbResult[0]["HeadImageFileID"]
                    },                                                                            //reader.IsDBNull(reader.GetOrdinal("HeadImageFileID")) ? new Attachment() : new Attachment() { ID = reader.GetString("HeadImageFileID") },
                    Headline    = (string)dbResult[0]["Headline"],
                    Description = (string)dbResult[0]["Description"],

                    BloodType     = (string)dbResult[0]["BloodType"],     //reader.IsDBNull(reader.GetOrdinal("BloodType")) ? null : reader.GetString("BloodType"),
                    Constellation = (string)dbResult[0]["Constellation"], //reader.IsDBNull(reader.GetOrdinal("Constellation")) ? null : reader.GetString("Constellation"),
                    Hobby         = (string)dbResult[0]["Hobby"],         //reader.IsDBNull(reader.GetOrdinal("Hobby")) ? null : reader.GetString("Hobby"),
                    Education     = (string)dbResult[0]["Education"],     //reader.IsDBNull(reader.GetOrdinal("Education")) ? null : reader.GetString("Education"),
                    Industry      = (string)dbResult[0]["Industry"],      //reader.IsDBNull(reader.GetOrdinal("Industry")) ? null : reader.GetString("Industry"),

                    Organization = (string)dbResult[0]["Organization"],   //reader.IsDBNull(reader.GetOrdinal("Organization")) ? null : reader.GetString("Organization"),
                    Department   = (string)dbResult[0]["Department"],
                    WorkGroup    = (string)dbResult[0]["WorkGroup"],

                    Alias          = (string)dbResult[0]["Alias"],
                    PhoneNumber    = (string)dbResult[0]["PhoneNumber"],
                    PoliticsStatus = (string)dbResult[0]["PoliticsStatus"],

                    Position = (string)dbResult[0]["Position"]//reader.IsDBNull(reader.GetOrdinal("Position")) ? null : reader.GetString("Position")
                };
            }

            return(account);
        }
Example #2
0
        public byte[] GetHeadImage(string UID, Func <object, object> ProcessingFunction)
        {
            Core.DomainModel.Account account = this.GetAccountHeadImage(UID);

            byte[] imageBytes = account.HeadImage.Bytes;

            if (ProcessingFunction != null)
            {
                imageBytes = ProcessingFunction(account.HeadImage.ID) as  byte[];
            }

            return(imageBytes);
        }
Example #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ID"></param>
        /// <param name="Account"></param>
        /// <param name="ShouldUpdateName"></param>
        /// <returns></returns>
        public Core.DomainModel.Account SetAccount(string ID, Core.DomainModel.Account Account, bool ShouldUpdateName)
        {
            if (String.IsNullOrEmpty(Account.ID))
            {
                throw (new AccountIDNullException("账户唯一标识不可为空值!"));
            }

            string sqlCommandText = ModuleConfiguration.SQL_CMD_UpdateAccount;

            IDictionary <string, object> sqlParams = new Dictionary <string, object>()
            {
                { "@Id", Account.ID },
                { "@FirstName", Account.FirstName },
                { "@LastName", Account.LastName },
                { "@NickName", Account.NickName },
                { "@Gender", Account.Gender },
                { "@BirthDate", Account.BirthDate },
                { "@Title", Account.Title },
                { "@SID", Account.SID },
                { "@Address", Account.Address },
                { "@ZipCode", Account.ZipCode },
                { "@Email", Account.Email },
                { "@Mobile", Account.Mobile },
                { "@BloodType", Account.BloodType },
                { "@Constellation", Account.Constellation },
                { "@Hobby", Account.Hobby },
                { "@Education", Account.Education },
                { "@Industry", Account.Industry },
                { "@Organization", Account.Organization },
                { "@Department", Account.Department },
                { "@WorkGroup", Account.WorkGroup },
                { "@Position", Account.Position },
                { "@Description", Account.Description },
                { "@Headline", Account.Headline },
                { "@HeadImageFileID", Account.HeadImage != null ? Account.HeadImage.ID : null },
                { "@ModifiedDate", DateTime.Now },
                { "@Alias", Account.Alias },
                { "@PhoneNumber", Account.PhoneNumber },
                { "@PoliticsStatus", Account.PoliticsStatus }
            };

            if (ShouldUpdateName)
            {
                sqlCommandText = ModuleConfiguration.SQL_CMD_UpdateAccountWithUserName;
                sqlParams.Add("@Name", Account.Name);
            }

            this.dmlOperable.ExeSql(sqlCommandText, sqlParams);

            return(Account);
        }
Example #4
0
        public Core.DomainModel.Account GetAccountHeadImage(string ID)
        {
            Core.DomainModel.Account account = null;

            string sqlCommandText = ModuleConfiguration.SQL_CMD_SelectAccountHeadImageById;

            IList <IDictionary <string, object> > dbResult = this.dmlOperable.ExeReader(sqlCommandText, new Dictionary <string, object>()
            {
                { "@Id", ID }
            });

            if (dbResult != null && dbResult.Count == 1)
            {
                account = new Core.DomainModel.Account()
                {
                    ID = (string)dbResult[0]["Id"],
                    //Name = (string)dbResult[0]["Name"],
                    //Address = (string)dbResult[0]["Address"],
                    //BirthDate = (DateTime)dbResult[0]["BirthDate"],
                    //Email = (string)dbResult[0]["Email"],
                    //FirstName = (string)dbResult[0]["FirstName"],
                    //LastName = (string)dbResult[0]["LastName"],
                    //Gender = (int)dbResult[0]["Gender"],
                    //Mobile = (string)dbResult[0]["Mobile"],
                    //NickName = (string)dbResult[0]["NickName"],
                    ////QQNumber = reader.IsDBNull(reader.GetOrdinal("QQNumber")) ? null : reader.GetString("QQNumber"),
                    //SID = (string)dbResult[0]["SID"],
                    //Title = (string)dbResult[0]["Title"],
                    ////WeChatNumber = reader.IsDBNull(reader.GetOrdinal("WeChatNumber")) ? null : reader.GetString("WeChatNumber"),
                    //ZipCode = (string)dbResult[0]["ZipCode"],
                    HeadImage = new Attachment()
                    {
                        ID = (string)dbResult[0]["HeadImageFileID"]
                    },                                                                            //reader.IsDBNull(reader.GetOrdinal("HeadImageFileID")) ? new Attachment() : new Attachment() { ID = reader.GetString("HeadImageFileID") },

                    //BloodType = (string)dbResult[0]["BloodType"],//reader.IsDBNull(reader.GetOrdinal("BloodType")) ? null : reader.GetString("BloodType"),
                    //Constellation = (string)dbResult[0]["Constellation"],//reader.IsDBNull(reader.GetOrdinal("Constellation")) ? null : reader.GetString("Constellation"),
                    //Hobby = (string)dbResult[0]["BloodType"],//reader.IsDBNull(reader.GetOrdinal("Hobby")) ? null : reader.GetString("Hobby"),
                    //Education = (string)dbResult[0]["Education"],//reader.IsDBNull(reader.GetOrdinal("Education")) ? null : reader.GetString("Education"),
                    //Industry = (string)dbResult[0]["Industry"], //reader.IsDBNull(reader.GetOrdinal("Industry")) ? null : reader.GetString("Industry"),

                    //Organization = (string)dbResult[0]["Organization"],//reader.IsDBNull(reader.GetOrdinal("Organization")) ? null : reader.GetString("Organization"),
                    //Position = (string)dbResult[0]["Position"]//reader.IsDBNull(reader.GetOrdinal("Position")) ? null : reader.GetString("Position")
                };
            }

            return(account);
        }
Example #5
0
        public string AddAccount(Core.DomainModel.Account Account)
        {
            if (String.IsNullOrEmpty(Account.ID))
            {
                //throw (new AccountIDNullException("账户唯一标识不可为空值!"));
                Account.ID = Guid.NewGuid().ToString();
            }

            string sqlCommandText = ModuleConfiguration.SQL_CMD_InsertAccount;

            this.dmlOperable.ExeSql(sqlCommandText, new Dictionary <string, object>()
            {
                { "@Id", Account.ID },
                { "@Name", Account.Name },
                { "@FirstName", Account.FirstName },
                { "@LastName", Account.LastName },
                { "@NickName", Account.NickName },
                { "@Gender", Account.Gender },
                { "@BirthDate", Account.BirthDate },
                { "@Title", Account.Title },
                { "@SID", Account.SID },
                { "@Address", Account.Address },
                { "@ZipCode", Account.ZipCode },
                { "@Email", Account.Email },
                { "@Mobile", Account.Mobile },
                { "@HeadImageFileID", Account.HeadImage != null ? Account.HeadImage.ID : null },
                { "@ModifiedDate", DateTime.Now },
                { "@Alias", Account.Alias },
                { "@PhoneNumber", Account.PhoneNumber },
                { "@PoliticsStatus", Account.PoliticsStatus },
                { "@Organization", Account.Organization },
                { "@Department", Account.Department },
                { "@WorkGroup", Account.WorkGroup },
                { "@Position", Account.Position },
            });

            return(Account.ID);
        }
Example #6
0
        public static object Regiser()
        {
            string configXmlPath = Rally.Framework.Authorization.ModuleConfiguration.DefaultResourceACConfigurationFilePath;
            string configXml     = "";

            if (!IO.File.Exists(configXmlPath))
            {
                return(null);
            }

            using (FileStream stream = new FileStream(configXmlPath, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    configXml = reader.ReadToEnd();
                }
            }

            ResourceAuthConfiguration authConf = XmlUtility.XmlDeserialize <ResourceAuthConfiguration>(configXml, new Type[] { typeof(Resource), typeof(Subject), typeof(Scope), typeof(Action) }, "utf-8");

            IAuthorization authorizationManager = Facade.CreateAuthorizationManager();

            string regiseredOpId = null, registeredScopeId = null;

            string[] ops = authorizationManager.GetDataTypeOperations(null), scopes = authorizationManager.GetDataScopes(null);

            List <string> opsRegistered = null, scopesRegistered = null, rolesRegistered = null, allRoles = new List <string>();

            List <object> identityResults = null;

            if (authConf != null)
            {
                opsRegistered    = new List <string>();
                scopesRegistered = new List <string>();
                //rolesRegistered = new List<string>();

                foreach (var resource in authConf.Resources)
                {
                    if (resource != null)
                    {
                        if ((resource.Actions != null) && (resource.Actions.Length > 0))
                        {
                            if (ops == null)
                            {
                                ops = new string[] { };
                            }

                            ops = ops.Select(o => o.ToLower()).ToArray();

                            foreach (var action in resource.Actions)
                            {
                                if ((action != null) && (!ops.Contains(action.ID.ToLower())) && (!opsRegistered.Contains(action.ID.ToLower())))
                                {
                                    regiseredOpId = (int)authorizationManager.RegisterOperation(resource.Name, action.ID, action.Name) >= 0 ? action.ID : null;

                                    if (!String.IsNullOrEmpty(regiseredOpId))
                                    {
                                        opsRegistered.Add(regiseredOpId.ToLower());
                                    }
                                }
                            }

                            if (Rally.Framework.Authorization.ModuleConfiguration.ShouldDeleteObsoleteOperationsOnRegistration)
                            {
                                var obsoleteRoleOps = authorizationManager.GetRoleOperations(null) as IList <IDictionary <string, object> >;
                                obsoleteRoleOps = obsoleteRoleOps == null ? null : obsoleteRoleOps.Where(ro => !opsRegistered.Contains((string)ro["OperationId"]) && !ops.Contains((string)ro["OperationId"])) as IList <IDictionary <string, object> >;

                                if (obsoleteRoleOps != null && obsoleteRoleOps.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteRoleOps.Count; i++)
                                    {
                                        authorizationManager.DeleteOperation((string)obsoleteRoleOps[i]["OperationId"]);
                                    }
                                }

                                var obsoleteObjectAuthItems = authorizationManager.GetObjectAuthItems() as IList <IDictionary <string, object> >;
                                obsoleteObjectAuthItems = obsoleteObjectAuthItems == null ? null : obsoleteObjectAuthItems.Where(oo => !opsRegistered.Contains((string)oo["OperationId"]) && !ops.Contains((string)oo["OperationId"])) as IList <IDictionary <string, object> >;

                                if (obsoleteObjectAuthItems != null && obsoleteObjectAuthItems.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteObjectAuthItems.Count; i++)
                                    {
                                        authorizationManager.DeleteOperation((string)obsoleteObjectAuthItems[i]["OperationId"]);
                                    }
                                }

                                var obsoleteOps = authorizationManager.GetOperations() as IList <IDictionary <string, object> >;
                                obsoleteOps = obsoleteOps == null ? null : obsoleteOps.Where(o => !opsRegistered.Contains((string)o["Id"]) && !ops.Contains((string)o["Id"])) as IList <IDictionary <string, object> >;

                                if (obsoleteOps != null && obsoleteOps.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteOps.Count; i++)
                                    {
                                        authorizationManager.DeleteOperation((string)obsoleteOps[i]["Id"]);
                                    }
                                }
                            }
                        }

                        if ((resource.Scopes != null) && (resource.Scopes.Length > 0))
                        {
                            if (scopes == null)
                            {
                                scopes = new string[] { };
                            }

                            scopes = scopes.Select(s => s.ToLower()).ToArray();

                            foreach (var scope in resource.Scopes)
                            {
                                if ((scope != null) && (!scopes.Contains(scope.ID.ToLower())) && (!scopesRegistered.Contains(scope.ID.ToLower())))
                                {
                                    registeredScopeId = (int)authorizationManager.RegisterDataScope(resource.Name, scope.ID, scope.Name, scope.Type, resource.Key) >= 0 ? scope.ID : null;

                                    if (!String.IsNullOrEmpty(registeredScopeId))
                                    {
                                        scopesRegistered.Add(registeredScopeId.ToLower());
                                    }
                                }
                            }

                            if (Rally.Framework.Authorization.ModuleConfiguration.ShouldDeleteObsoleteDataScopesOnRegistration)
                            {
                                var obsoleteRoleDataScopes = authorizationManager.GetRoleDataScopes(null) as IList <IDictionary <string, object> >;
                                obsoleteRoleDataScopes = obsoleteRoleDataScopes == null ? null : obsoleteRoleDataScopes.Where(rd => !!scopesRegistered.Contains((string)rd["DataScopeId"]) && !scopes.Contains((string)rd["DataScopeId"])) as IList <IDictionary <string, object> >;

                                if (obsoleteRoleDataScopes != null && obsoleteRoleDataScopes.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteRoleDataScopes.Count; i++)
                                    {
                                        authorizationManager.DeleteDataScope((string)obsoleteRoleDataScopes[i]["DataScopeId"]);
                                    }
                                }

                                var obsoleteDataScopes = authorizationManager.GetDataScopes(null) as string[];
                                obsoleteDataScopes = obsoleteDataScopes == null ? null : obsoleteDataScopes.Where(ds => !scopesRegistered.Contains(ds) && !scopes.Contains(ds)) as string[];

                                if (obsoleteDataScopes != null && obsoleteDataScopes.Length > 0)
                                {
                                    for (int i = 0; i < obsoleteDataScopes.Length; i++)
                                    {
                                        authorizationManager.DeleteDataScope(obsoleteDataScopes[i]);
                                    }
                                }
                            }
                        }

                        if ((resource.Subjects != null) && (resource.Subjects.Length > 0))
                        {
                            var accountManager = Facade.CreateAccountManager();
                            var userManager    = Facade.CreateUserManager();

                            IDictionary <string, string> rolesToRegister  = new Dictionary <string, string>();
                            IDictionary <string, string> roleDescriptions = new Dictionary <string, string>();

                            foreach (var subject in resource.Subjects)
                            {
                                if (subject.Type.ToLower() == "fixedrole")
                                {
                                    allRoles.Add(subject.ID);

                                    if (!authorizationManager.RoleExists(subject.ID, subject.Name))
                                    {
                                        rolesToRegister.Add(subject.ID, subject.Name);
                                        roleDescriptions.Add(subject.ID, subject.Description);
                                    }
                                }
                                else if (subject.Type.ToLower() == "fixeduser")
                                {
                                    bool userExists   = userManager.UserExists(subject.ID, subject.Name);
                                    var  identityUser = accountManager.GetAccount(subject.ID);

                                    if (identityUser == null)
                                    {
                                        identityUser = accountManager.GetAccountByNickName(subject.Name);
                                    }

                                    if ((identityUser != null) && userExists && Rally.Framework.Authorization.ModuleConfiguration.ShouldDeleteObsoleteUsersOnRegistration)
                                    {
                                    }

                                    if (identityUser == null && !userExists)
                                    {
                                        userManager.AddUser <Core.DomainModel.Account>(subject.ID, subject.Name, Rally.Framework.Authentication.ModuleConfiguration.DefaultFixedUserPassword, (u) => {
                                            string userId = u.ToString();

                                            var account = new Core.DomainModel.Account()
                                            {
                                                ID       = userId,
                                                Name     = subject.Name,
                                                NickName = subject.Name
                                            };

                                            accountManager.AddAccount(account);

                                            return(account);
                                        });
                                    }
                                }
                            }

                            rolesRegistered = (int)authorizationManager.AddRoles(rolesToRegister, roleDescriptions) >= 0 ? rolesRegistered : null;

                            if (rolesRegistered == null)
                            {
                                rolesRegistered = new List <string>();
                            }

                            if (Rally.Framework.Authorization.ModuleConfiguration.ShouldDeleteObsoleteRolesOnRegistration)
                            {
                                var obsoleteRoleDataScopes = authorizationManager.GetRoleDataScopes(null) as IList <IDictionary <string, object> >;
                                obsoleteRoleDataScopes = obsoleteRoleDataScopes == null ?  null : obsoleteRoleDataScopes.Where(rd => !rolesRegistered.Contains((string)rd["RoleId"])) as IList <IDictionary <string, object> >;

                                if (obsoleteRoleDataScopes != null && obsoleteRoleDataScopes.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteRoleDataScopes.Count; i++)
                                    {
                                        authorizationManager.DeleteDataScope((string)obsoleteRoleDataScopes[i]["DataScopeId"]);
                                    }
                                }

                                var obsoleteRoleOps = authorizationManager.GetRoleOperations(null) as IList <IDictionary <string, object> >;
                                obsoleteRoleOps = obsoleteRoleOps == null ? null : obsoleteRoleOps.Where(ro => !opsRegistered.Contains((string)ro["RoleId"]) && !ops.Contains((string)ro["RoleId"])) as IList <IDictionary <string, object> >;

                                if (obsoleteRoleOps != null && obsoleteRoleOps.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteRoleOps.Count; i++)
                                    {
                                        authorizationManager.DeleteOperation((string)obsoleteRoleOps[i]["OperationId"]);
                                    }
                                }

                                var obsoleteRoles = authorizationManager.GetRoles() as IList <IDictionary <string, object> >;
                                obsoleteRoles = obsoleteRoles == null ? null : obsoleteRoles.Where(r => !rolesRegistered.Contains((string)r["Id"]) && !allRoles.Contains((string)r["Id"])) as IList <IDictionary <string, object> >;

                                if (obsoleteRoles != null && obsoleteRoles.Count > 0)
                                {
                                    for (int i = 0; i < obsoleteRoles.Count; i++)
                                    {
                                        authorizationManager.DeleteRole((string)obsoleteRoles[i]["Id"]);
                                    }
                                }
                            }
                        }
                    }
                }
            }

            return(((opsRegistered != null) || (scopesRegistered != null) || (rolesRegistered != null) || (identityResults != null)) ? new object[] { opsRegistered, scopesRegistered, rolesRegistered, identityResults } : null);
        }