Esempio n. 1
0
 public virtual async Task AddLoginAsync(TUser user, UserLoginInfo login)
 {
     user.CheckNotNull("user");
     login.CheckNotNull("login");
     TUserLogin userLogin = new TUserLogin()
     {
         LoginProvider = login.LoginProvider, ProviderKey = login.ProviderKey, User = user
     };
     await UserLoginRepository.InsertAsync(userLogin);
 }
Esempio n. 2
0
        /// <summary>
        /// 添加用户登录信息
        /// </summary>
        /// <param name="inputDtos">要添加的用户登录信息Dtos集合</param>
        /// <param name="cacheUser">当前操作用户的缓存</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> AddUserLogin(CacheUser cacheUser, params UserLoginInputDto[] inputDtos)
        {
            try
            {
                if (inputDtos.Length <= 0)
                {
                    return(new OperationResult(OperationResultType.Error, "添加用户的数组不存在存数!"));
                }
                else
                {
                    List <string> names = new List <string>();
                    UserLoginRepository.UnitOfWork.BeginTransaction();
                    foreach (UserLoginInputDto dto in inputDtos)
                    {
                        if (cacheUser.Level >= dto.Level)
                        {
                            return(new OperationResult(OperationResultType.ValidError, $"用户:{dto.UserName}权限等级参数设置错误"));
                        }
                        UserLogin value = dto.MapTo <UserLogin>();
                        value.SecretKey = new Random().NextLetterString(16);
                        value.Password  = value.Password.AESEncrypt128(key: value.SecretKey);
                        value.UserMany.Add(new User
                        {
                            CreatedTime     = DateTime.Now,
                            CreatorUserId   = cacheUser.UserName,
                            LastUpdatedTime = DateTime.Now,
                            UserLoginOne    = value,
                        });
                        await UserLoginRepository.InsertAsync(value);

                        if (value.Level == 2)
                        {
                            int count = UserOrganizeMapRepository.CheckExists(m => m.Organize_Id == value.Organize_Id && m.UserLogin_Id == value.Id) ? 0 : UserOrganizeMapRepository.Insert(new UserOrganizeMap {
                                Organize_Id = value.Organize_Id, UserLogin_Id = value.Id
                            });
                        }
                        names.Add(value.UserName);
                    }
                    UserLoginRepository.UnitOfWork.Commit();
                    if (names.Count == 0)
                    {
                        return(new OperationResult(OperationResultType.NoChanged, "未能添加任何用户"));
                    }
                    else
                    {
                        return(new OperationResult(OperationResultType.Success, "用户:{0}创建成功".FormatWith(names.ExpandAndToString())));
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception($"id:{ex.InnerException.Message}");
            }
        }
        /// <summary>
        /// 绑定小程序至账号
        /// </summary>
        /// <param name="encrpytedUserId"></param>
        /// <returns></returns>
        public virtual async Task BindLogin(string encryptedUserId, string openId)
        {
            if (!int.TryParse(SimpleStringCipher.Instance.Decrypt(encryptedUserId, AppConsts.DefaultPassPhrase), out var userid))
            {
                throw new UserFriendlyException("未找到对应用户");
            }
            var user = await UserRepository.GetAll().IgnoreQueryFilters().Where(o => o.Id == userid).SingleAsync();

            await UserLoginRepository.DeleteAsync(o => o.UserId == userid && o.LoginProvider == MiniProgramAuthProviderApi.Name);

            var userlogin = new UserLogin()
            {
                UserId        = userid,
                LoginProvider = MiniProgramAuthProviderApi.Name,
                TenantId      = user.TenantId,
                ProviderKey   = openId
            };
            await UserLoginRepository.InsertAsync(userlogin);
        }