Esempio n. 1
0
        /// <summary>
        /// 验证凭据。
        /// </summary>
        /// <param name="userField">该参数将被忽略。</param>
        /// <returns>身份验证结果。</returns>
        public AuthResult Auth(bool userField = false)
        {
            var authProperty = new AuthPropertyModel
            {
                Name      = "preferredLanguage",
                ProfileId = string.Empty,
                UserId    = PlayerUUID.Random(),
                Value     = "zh-cn"
            };

            var uuid   = PlayerUUID.FromOfflinePlayerName(Username);
            var result = new AuthResult
            {
                AccessToken     = GuidHelper.NewGuidString(),
                AuthStatus      = AuthStatus.Succeeded,
                SelectedProfile = new ProfileInfoModel
                {
                    Name = Username,
                    UUID = uuid
                },
                User = new UserInfoModel
                {
                    UUID       = uuid,
                    Properties = new List <PropertyModel>
                    {
                        new PropertyModel
                        {
                            Name  = authProperty.Name,
                            Value = authProperty.Value
                        }
                    }
                }
            };

            var authInfo = new AuthInfoModel
            {
                UserName = Username,
                Profiles = new Dictionary <PlayerUUID, AuthProfileModel>
                {
                    { result.SelectedProfile.UUID, new AuthProfileModel {
                          DisplayName = Username
                      } }
                },
                Properties = new List <AuthPropertyModel>
                {
                    authProperty
                }
            };

            LauncherProfileParser.AddNewAuthInfo(authInfo, uuid);

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// 添加新的验证信息
        /// </summary>
        /// <param name="authInfo"></param>
        /// <param name="guid"></param>
        public void AddNewAuthInfo(AuthInfoModel authInfo, string guid)
        {
            if (IsAuthInfoExist(guid, authInfo.UserName))
            {
                return;
            }

            LauncherProfile.AuthenticationDatabase.Add(
                authInfo.Properties.Any() ? authInfo.Properties.First().UserId : authInfo.Profiles.First().Key,
                authInfo);
            SaveProfile();
        }
Esempio n. 3
0
        public AuthResult Auth(bool userField)
        {
            var authProperty = new AuthPropertyModel
            {
                Name      = "preferredLanguage",
                ProfileId = "",
                UserId    = Guid.NewGuid().ToString("N"),
                Value     = "zh-cn"
            };

            var calcGuid = GuidHelper.GetGuidByName(Username).ToString("N");
            var result   = new AuthResult
            {
                AccessToken     = Guid.NewGuid().ToString("N"),
                AuthStatus      = AuthStatus.Succeeded,
                SelectedProfile = new ProfileInfoModel
                {
                    Name = Username,
                    Id   = calcGuid
                },
                User = new UserInfoModel
                {
                    Id         = calcGuid,
                    Properties = new List <PropertyModel>
                    {
                        new PropertyModel
                        {
                            Name  = authProperty.Name,
                            Value = authProperty.Value
                        }
                    }
                }
            };

            var authInfo = new AuthInfoModel
            {
                UserName = Username,
                Profiles = new Dictionary <string, AuthProfileModel>
                {
                    { result.SelectedProfile.Id, new AuthProfileModel {
                          DisplayName = Username
                      } }
                },
                Properties = new List <AuthPropertyModel>
                {
                    authProperty
                }
            };

            LauncherProfileParser.AddNewAuthInfo(authInfo, calcGuid);

            return(result);
        }
Esempio n. 4
0
        public async Task <bool> Contains(AuthInfoModel newUser)
        {
            var user = await userRepository.Get(newUser.Email);

            if (user is null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Esempio n. 5
0
        public async Task <IResultModel> GetAuthInfo()
        {
            var user = await _userRepository.FirstAsync(m => m.Id == _loginInfo.UserId && m.IsDel == false);

            if (user == null)
            {
                return(ResultModel.Failed("用户不存在"));
            }

            if (user.Status == UserStatus.Disabled)
            {
                return(ResultModel.Failed("用户已被禁用"));
            }

            var roles = await _roleUserRepository.QueryByUserId(_loginInfo.UserId);

            var skin = await _skinRepository.FirstAsync(m => m.UserId == user.Id && m.IsDel == false);

            var model = new AuthInfoModel
            {
                UserId    = user.Id,
                UserCode  = user.UserCode,
                UserName  = user.UserName,
                Sex       = user.Sex,
                JobName   = user.JobName,
                Phone     = user.Phone,
                Email     = user.Email,
                RoleIds   = string.Join(",", roles.Select(m => m.Id).ToList()),
                RoleCodes = string.Join(",", roles.Select(m => m.RoleCode).ToList()),
                RoleNames = string.Join(",", roles.Select(m => m.RoleName).ToList()),
                Skin      = skin
            };

            var getMenuTree = GetUserMenuTree(_loginInfo.UserId);

            model.Menus = await getMenuTree;

            //超级管理查询所有
            if (_loginInfo.RoleCodes.Contains(RoleKey.ROLE_SUPER_CODE))
            {
                model.Permissions = await _permissionRepository.GetListAsync(m => m.IsDel == false);
            }
            else
            {
                model.Permissions = await _permissionRepository.QueryByUserId(_loginInfo.UserId);
            }

            return(ResultModel.Success(model));
        }
Esempio n. 6
0
        public async Task <bool> CheckPassword(AuthInfoModel signinData)
        {
            var user = await userRepository.Get(signinData.Email);

            if (user is null)
            {
                return(false);
            }

            var authInfo = await authInfoRepository.Get(user.AuthInfoId);

            var passwordHash = authInfo.PasswordHash;

            return(passwordHash == signinData.Password);
        }
Esempio n. 7
0
        public void AddNewAuthInfo(AuthInfoModel authInfo, PlayerUUID uuid)
        {
            if (IsAuthInfoExist(uuid, authInfo.UserName))
            {
                return;
            }
            if (!(LauncherProfile.AuthenticationDatabase?.Any() ?? false))
            {
                LauncherProfile.AuthenticationDatabase = new Dictionary <PlayerUUID, AuthInfoModel>();
            }

            LauncherProfile.AuthenticationDatabase.Add(
                authInfo.Properties.Any() ? authInfo.Properties.First().UserId : authInfo.Profiles.First().Key,
                authInfo);
            SaveProfile();
        }
Esempio n. 8
0
        public async Task AddUser(AuthInfoModel newUser)
        {
            var checkUser = await userRepository.Get(newUser.Email);

            if (checkUser is not null)
            {
                return;
            }

            var user = new UserEntity
            {
                Email    = newUser.Email,
                AuthInfo = new AuthInfoEntity {
                    PasswordHash = newUser.Password
                },
                Profile = new ProfileEntity {
                    Nickname = newUser.Email
                }
            };

            await userRepository.Add(user);
        }
Esempio n. 9
0
        /// <summary>
        /// 获取认证信息
        /// </summary>
        /// <returns></returns>
        public async Task <IResultModel> GetAuthInfo()
        {
            var account = await _accountRepository.GetAsync(_loginInfo.AccountId);

            if (account == null)
            {
                return(ResultModel.Failed("账户不存在"));
            }

            var result = account.Check();

            //检测账户状态
            if (!result.Successful)
            {
                return(result);
            }

            var model = new AuthInfoModel
            {
                Id       = account.Id,
                Type     = account.Type,
                UserName = account.UserName,
                Name     = account.Name,
                Phone    = account.Phone,
                Email    = account.Email,
            };

            #region ==获取账户详细信息==

            var detailsBuilders = _serviceProvider.GetServices <ILoginInfoDetailsBuilder>().ToList();
            if (detailsBuilders.Any())
            {
                var detailsBuilder = detailsBuilders.FirstOrDefault(m => m.AccountType == account.Type);
                if (detailsBuilder != null)
                {
                    model.Details = await detailsBuilder.Build(_loginInfo.AccountId);
                }
            }

            #endregion

            #region ==Web端==

            if (_loginInfo.Platform == Platform.Web)
            {
                //加载配置信息
                var config = await _configRepository.GetByAccount(_loginInfo.AccountId);

                if (config != null)
                {
                    model.Skin = new SkinConfigModel
                    {
                        Name     = config.Skin,
                        Theme    = config.Theme,
                        FontSize = config.FontSize
                    };
                }
                else
                {
                    model.Skin = new SkinConfigModel
                    {
                        Name     = "pretty",
                        Theme    = "",
                        FontSize = "small"
                    };
                }

                var getMenuTree    = _permissionResolver.ResolveMenus(_loginInfo.AccountId);
                var getPageCodes   = _permissionResolver.ResolvePages(_loginInfo.AccountId);
                var getButtonCodes = _permissionResolver.ResolveButtons(_loginInfo.AccountId);

                model.Menus   = await getMenuTree;
                model.Pages   = await getPageCodes;
                model.Buttons = await getButtonCodes;
            }

            #endregion

            return(ResultModel.Success(model));
        }