public void SimpleUserTestDeserializeBase(byte[] Result, SimpleUserInfo Value, BaseOptionInfo SerializerOptions)
        {
            //in this example server side has SimpleUserInfo
            //server side has Id, Name, Family
            //and the client side has SimpleUserOldStructureInfo
            //client side has Id, Age, BirthDate ,Name

            //new structure of models
            var newStructureModels = BinarySerializer.GetStructureModels(SerializerOptions);

            //my old deserializer
            var myDeserializer = new BinaryDeserializer();

            myDeserializer.Options = new BinaryGo.Helpers.BaseOptionInfo();

            #region VersionChangedControl
            //generate type
            myDeserializer.Options.GenerateType <SimpleUserOldStructureInfo>();
            //add model renamed
            myDeserializer.AddMovedType(myDeserializer.GetStrcutureModelName(typeof(SimpleUserInfo)), typeof(SimpleUserOldStructureInfo));
            //build new structure to old structure
            myDeserializer.BuildStructure(newStructureModels);
            #endregion

            var result = myDeserializer.Deserialize <SimpleUserOldStructureInfo>(Result);
            Assert.True(result.IsEquals(Value));

            //now serialize from client side and deserialize from server side happen
            result.Age       = 150;
            result.BirthDate = DateTime.Now.AddYears(-20);
            BinarySerializer binarySerializer = new BinarySerializer(myDeserializer.Options);
            var resultSerialized   = binarySerializer.Serialize(result);
            var resultDeserialized = myDeserializer.Deserialize <SimpleUserOldStructureInfo>(resultSerialized);
            Assert.True(resultDeserialized.IsEquals(Value));
        }
Ejemplo n.º 2
0
        private IUserInfo ChangeUserState(DataRow rowUser, bool isValid)
        {
            IUserInfo result = null;

            SetCommands(AdapterCommand.Update);

            if (!isValid)
            {
                //strSQL = "UPDATE UR_USERS SET USER_ACTIVE = 0, USER_UNLOCK_DATE = {0} WHERE USER_ID ={1} ";
                //strSQL = string.Format(strSQL, Context.GetSqlParamName("USER_UNLOCK_DATE"), Context.GetSqlParamName("USER_ID"));
                //parameters.Add("USER_UNLOCK_DATE", XmlDataType.DateTime, DateTime.Now.AddDays(1));
                //parameters.Add("USER_ID", XmlDataType.String, rowUser["USER_ID"]);
            }
            else
            {
                rowUser.BeginEdit();
                rowUser["Active"]     = 1;
                rowUser["LoginDate"]  = DateTime.Now;
                rowUser["UnlockDate"] = DBNull.Value;
                rowUser.EndEdit();

                result = new SimpleUserInfo(rowUser["Name"].ToString(),
                                            rowUser["LoginName"].ToString(), rowUser["Id"], rowUser["OrgId"]);
            }
            UpdateDatabase();
            return(result);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 构造一个简单用户信息类集合
        /// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        private List <SimpleUserInfo> FillSimpleUsers(string sql)
        {
            Database  db      = CreateDatabase();
            DbCommand command = db.GetSqlStringCommand(sql);

            List <SimpleUserInfo> list = new List <SimpleUserInfo>();

            using (IDataReader reader = db.ExecuteReader(command))
            {
                SmartDataReader dr = new SmartDataReader(reader);
                while (reader.Read())
                {
                    SimpleUserInfo info = new SimpleUserInfo();
                    info.Id          = dr.GetInt32("Id");
                    info.Name        = dr.GetString("Name");
                    info.Password    = dr.GetString("Password");
                    info.FullName    = dr.GetString("FullName");
                    info.UserCode    = dr.GetString("UserCode");
                    info.MobilePhone = dr.GetString("MobilePhone");
                    info.Email       = dr.GetString("Email");
                    list.Add(info);
                }
            }
            return(list);
        }
Ejemplo n.º 4
0
        // From body is a hack. Because query have length limit.
        public async Task <IActionResult> GetUsersSimpleInfoBatch(ulong guildId, [FromBody] GetUsersSimpleInfoBatchRequest request)
        {
            var guild = DiscordClient.GetGuild(guildId);

            if (guild == null)
            {
                return(BadRequest(new { Message = "Requested guild not found." }));
            }

            await guild.SyncGuildAsync();

            var users = new List <SimpleUserInfo>();

            foreach (var id in request.UserIDs)
            {
                var user = await guild.GetUserFromGuildAsync(id);

                if (user != null)
                {
                    users.Add(SimpleUserInfo.Create(user));
                }
            }

            return(Ok(users));
        }
Ejemplo n.º 5
0
        public async Task <List <SimpleUserInfo> > GetSimpleUsersList(ulong guildID, List <ulong> userIds)
        {
            var guild = DiscordClient.GetGuild(guildID);

            if (guild == null)
            {
                throw new BadRequestException("Requested guild not found.", new { guildID });
            }

            await guild.SyncGuildAsync();

            var users = new List <SimpleUserInfo>();

            foreach (var id in userIds)
            {
                var user = await guild.GetUserFromGuildAsync(id);

                if (user != null)
                {
                    users.Add(SimpleUserInfo.Create(user));
                }
            }

            return(users);
        }
Ejemplo n.º 6
0
        public bool IsEquals(SimpleUserInfo user)
        {
            var isEqual = user.Id == Id &&
                          user.Name == Name;

            return(isEqual);
        }
Ejemplo n.º 7
0
        public ChannelboardViewModel(SocketGuild guild, SocketGuildUser user, List <ChannelStatItem> items)
        {
            Guild = guild;

            if (user != null)
            {
                User = SimpleUserInfo.Create(user);
            }

            Items = items;
        }
Ejemplo n.º 8
0
        public SimpleUserInfo GetSimpleSample()
        {
            SimpleUserInfo userInfo = new SimpleUserInfo()
            {
                Age         = 28,
                CreatedDate = DateTime.Now,
                FullName    = "Ali Yousefi Telori",
                Id          = 1,
            };

            return(userInfo);
        }
Ejemplo n.º 9
0
        public override bool Delete(object key)
        {
            List <SimpleUserInfo> list = new Role().getSimpleUserList();

            if (list.Count == 1)
            {
                SimpleUserInfo info = list[0];
                if (Convert.ToInt32(key) == info.ID)
                {
                    throw new MyException("管理员角色至少需要包含一个用户!");
                }
            }
            return(base.baseDal.Delete(key));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 重写删除操作,检查保留管理员用户
        /// </summary>
        /// <param name="key">主键的值</param>
        /// <param name="trans">事务对象</param>
        /// <returns></returns>
        public override bool Delete(object key, DbTransaction trans = null)
        {
            List <SimpleUserInfo> adminSimpleUsers = BLLFactory <Role> .Instance.GetAdminSimpleUsers();

            if (adminSimpleUsers.Count == 1)
            {
                SimpleUserInfo info = adminSimpleUsers[0];
                if (Convert.ToInt32(key) == info.ID)
                {
                    throw new MyException("管理员角色至少需要包含一个用户!");
                }
            }
            return(baseDal.Delete(key, trans));
            //return SetDeletedFlag(key, true, trans);
        }
Ejemplo n.º 11
0
 public void RemoveUser(int userID, int ouID)
 {
     if (this.OUInRole(ouID, "超级管理员"))
     {
         List <SimpleUserInfo> list = new Role().getSimpleUserList();
         if (list.Count == 1)
         {
             SimpleUserInfo info = list[0];
             if (userID == info.ID)
             {
                 throw new MyException("超级管理员角色至少需要包含一个用户!");
             }
         }
     }
     this.iou_0.RemoveUser(userID, ouID);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// 在机构中移除指定的用户
        /// </summary>
        /// <param name="userID">用户ID</param>
        /// <param name="ouID">机构ID</param>
        public void RemoveUser(int userID, int ouID)
        {
            if (this.OUInRole(ouID, RoleInfo.SuperAdminName))
            {
                List <SimpleUserInfo> adminSimpleUsers = BLLFactory <Role> .Instance.GetAdminSimpleUsers();

                if (adminSimpleUsers.Count == 1)
                {
                    SimpleUserInfo info = (SimpleUserInfo)adminSimpleUsers[0];
                    if (userID == info.ID)
                    {
                        throw new MyException("管理员角色至少需要包含一个用户!");
                    }
                }
            }
            ouDal.RemoveUser(userID, ouID);
        }
Ejemplo n.º 13
0
        private List <SimpleUserInfo> GetSqlList(string strSQL)
        {
            Database              database         = DatabaseFactory.CreateDatabase();
            DbCommand             sqlStringCommand = database.GetSqlStringCommand(strSQL);
            List <SimpleUserInfo> list             = new List <SimpleUserInfo>();

            using (IDataReader reader = database.ExecuteReader(sqlStringCommand))
            {
                SmartDataReader reader2 = new SmartDataReader(reader);
                while (reader.Read())
                {
                    SimpleUserInfo item = new SimpleUserInfo {
                        ID       = reader2.GetInt32("ID"),
                        Name     = reader2.GetString("Name"),
                        Password = reader2.GetString("Password"),
                        FullName = reader2.GetString("FullName")
                    };
                    list.Add(item);
                }
            }
            return(list);
        }
Ejemplo n.º 14
0
        private IEnumerable <ISimpleUserInfo> GetDisplaySimpleUserInfo(Models.SqlQueryModel.UserInfo[] users, IUserDisplayStrategy strategy)
        {
            var kind = strategy.GetUserDisplayKind();

            foreach (var user in users)
            {
                var simpleUser = new SimpleUserInfo()
                {
                    Uid             = user.uid,
                    Mobile          = user.mobile,
                    UserName        = strategy.GetUserName(user.uid, user.name, user.verifyStatus == VerifyStatus.Pass),
                    Sex             = user.sex,
                    Kind            = kind,
                    Job             = user.job,
                    Corver          = user.cover,
                    Company         = user.company,
                    IsSelf          = strategy.CheckIsSelfInfo(user.uid),
                    VerifyState     = VerifyStateConvert(user),
                    ForceShowMobile = strategy.GetIsForceShowMobile(user.uid),
                    ForceShowName   = strategy.GetIsForceShowName(user.uid),
                };
                yield return(simpleUser);
            }
        }
Ejemplo n.º 15
0
 public ChannelboardViewModel(SocketGuild guild, SocketGuildUser user, List <ChannelStatItem> items)
 {
     Guild = ChannelboardWebGuild.Create(guild);
     User  = SimpleUserInfo.Create(user);
     Items = items;
 }
Ejemplo n.º 16
0
        public ServiceResult <object> SelectUserRole([FromBody] UserInfo userInfo)
        {
            if (userInfo.RoleId == DataLayer.Tools.SystemConfig.SystemRoleId)
            {
                var clientIp = Util.GetClientIp(Request);
                if (!DataLayer.Tools.SystemConfig.AdminValidIp.Contains(clientIp))
                {
                    return(new ServiceResult <object>(Enumerator.ErrorCode.AccessDeny,
                                                      $"Admin IP is invalid: {clientIp}"));
                }
            }

            var httpSession = HttpContext.Session;
            var ip          = Util.GetClientIp(Request);

            if (httpSession == null || string.IsNullOrEmpty(httpSession.Id))
            {
                return(new ServiceResult <object>(Enumerator.ErrorCode.BusinessMessage,
                                                  "داده های ارسالی معتبر نمی باشد"));
            }
            var requestedUrl = Request.Headers["referer"].ToString();

            if (requestedUrl == null)
            {
                return(new ServiceResult <object>(Enumerator.ErrorCode.BusinessMessage, "درخواست معتبر نمی باشد"));
            }
            try
            {
                if (string.IsNullOrEmpty(userInfo.Username.Trim()))
                {
                    return(new ServiceResult <object>(Enumerator.ErrorCode.ApplicationError,
                                                      "لطفا نام کاربری را وارد نمایید"));
                }
                if (string.IsNullOrEmpty(userInfo.Password.Trim()))
                {
                    return(new ServiceResult <object>(Enumerator.ErrorCode.ApplicationError,
                                                      "لطفا کلمه عبور را وارد نمایید"));
                }
                var token = UserFacade.GetInstance()
                            .GetHashPassword(Util.GetTimeStamp(DateTime.Now).ToString(CultureInfo.InvariantCulture));

                using (var context = new ParsiContext())
                {
                    var userRole = context.UserRole.Where(p =>
                                                          p.CurrentUsers.Username == userInfo.Username.ToLower().Trim() &&
                                                          p.CurrentUsers.Password ==
                                                          UserFacade.GetInstance().GetHashPassword(userInfo.Password.Trim()) &&
                                                          p.RoleId == userInfo.RoleId &&
                                                          p.OrganizationId == userInfo.OrganizationId)
                                   .Include(p => p.CurrentRole)
                                   .Include(p => p.CurrentOrganization)
                                   .Include(p => p.CurrentUsers)
                                   .ThenInclude(p => p.CurrentPerson)
                                   .ThenInclude(p => p.CurrentFile)
                                   .FirstOrDefault();
                    if (userRole != null)
                    {
                        var info = new UserInfo
                        {
                            Active           = userRole.CurrentUsers.Active,
                            AccessKey        = userRole.OrgAccess,
                            Token            = token,
                            FirstName        = userRole.CurrentUsers.FirstName,
                            LastName         = userRole.CurrentUsers.LastName,
                            Password         = "",
                            Username         = userRole.CurrentUsers.Username,
                            PersonId         = userRole.CurrentUsers.PersonId,
                            RoleId           = userRole.RoleId,
                            UserId           = userRole.UserId,
                            RoleName         = userRole.CurrentRole.RoleName,
                            OrganizationName = userRole.CurrentOrganization.Name,
                            OrganizationId   = userRole.OrganizationId,
                            Timestamp        = Util.GetTimeStamp(
                                DateTime.Now.AddMinutes(
                                    Convert.ToDouble(userRole.CurrentRole.ExpireMinute.ToString()))),
                            Picture = userRole.CurrentUsers.CurrentPerson?.CurrentFile?.Path
                        };
                        info.UseCase = new Dictionary <string, HashSet <string> >();
                        var accessGroup = context.RoleAccessGroup.Where(p => p.Role == info.RoleId)
                                          .Select(p => p.AccessGroup)
                                          .ToList();
                        if (accessGroup.Count > 0)
                        {
                            var data = context.UseCaseActionAccessGroup.Where(p => accessGroup.Contains(p.AccessGroup))
                                       .Include(p => p.CurrentUseCaseAction)
                                       .ThenInclude(p => p.CurrentUseCase)
                                       .Include(p => p.CurrentUseCaseAction)
                                       .ThenInclude(p => p.CurrentAction).ToList();
                            foreach (var item in data)
                            {
                                if (info.UseCase.ContainsKey(item.CurrentUseCaseAction.CurrentUseCase.Clazz.ToLower()))
                                {
                                    var current =
                                        info.UseCase[item.CurrentUseCaseAction.CurrentUseCase.Clazz.ToLower()];
                                    current.Add(item.CurrentUseCaseAction.CurrentAction.ActionEnName);
                                    info.UseCase.Remove(item.CurrentUseCaseAction.CurrentUseCase.Clazz.ToLower());
                                    info.UseCase.Add(item.CurrentUseCaseAction.CurrentUseCase.Clazz.ToLower(), current);
                                }
                                else
                                {
                                    var current = new HashSet <string>();
                                    current.Add(item.CurrentUseCaseAction.CurrentAction.ActionEnName);
                                    info.UseCase.Add(item.CurrentUseCaseAction.CurrentUseCase.Clazz.ToLower(), current);
                                }
                            }
                        }

                        var offset =
                            new DateTimeOffset(
                                DateTime.Now.AddMinutes(
                                    Convert.ToDouble(userRole.CurrentRole.ExpireMinute.ToString())));
                        var option = new MemoryCacheEntryOptions().SetAbsoluteExpiration(offset)
                                     .SetPriority(CacheItemPriority.High);
                        _memoryCache.Set("session_" + info.Username, info, option);

                        var claims = new List <Claim>
                        {
                            new Claim("userId", info.UserId.ToString()),
                            new Claim(ClaimTypes.Name, info.Username),
                            new Claim("username", info.Username),
                            new Claim("firstName", info.FirstName),
                            new Claim("lastName", info.LastName),
                            new Claim("roleName", info.RoleName),
                            new Claim("token", info.Token),
                            new Claim("picture", info.Picture ?? "images/users/avatar.png"),
                            new Claim("IsAdmin", userRole.CurrentUsers.IsAdmin.ToString())
                        };
                        var identity   = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
                        var principal  = new ClaimsPrincipal(identity);
                        var properties = new AuthenticationProperties
                        {
                            IsPersistent = userInfo.Remember
                        };
                        HttpContext.SignInAsync(principal, properties);
                        var newUserInfo = new SimpleUserInfo
                        {
                            Token            = info.Token,
                            Username         = info.Username,
                            FirstName        = info.FirstName,
                            LastName         = info.LastName,
                            RoleName         = info.RoleName,
                            OrganizationName = info.OrganizationName,
                            Timestamp        = Util.GetTimeStamp(
                                DateTime.Now.AddMinutes(Convert.ToDouble(userRole.CurrentRole.ExpireMinute.ToString())))
                        };
                        var ticket = _jwtHandlers.Create(new TokenOption
                        {
                            UserInfo      = newUserInfo,
                            ExpireMinutes = userRole.CurrentRole.ExpireMinute,
                            Ip            = ip
                        });
                        newUserInfo.Ticket = ticket.Ticket;
                        return(new ServiceResult <object>(newUserInfo, 1));
                    }

                    return(new ServiceResult <object>(Enumerator.ErrorCode.ApplicationError,
                                                      "کاربری با این مشخصات یافت نشد"));
                }
            }
            catch (Exception e)
            {
                return(new ServiceResult <object>(Enumerator.ErrorCode.BusinessMessage,
                                                  "امکان ورود به سایت در حال حاضر میسر نمی باشد"));
            }
        }