Exemplo n.º 1
0
        /// <summary>
        /// 客户端登录
        /// </summary>
        /// <param name="login"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public async Task <ISTrainingPartResponse <User, LoginResponse> > LoginAsync(string login, string password)
        {
            var id  = Context.ConnectionId;
            var res = await usersRepository.GetUserAsync(login, password, true);

            LoginResponse loginResponse = LoginResponse.Invalid;

            if (res && res.Response != null)
            {
                loginResponse = LoginResponse.Ok;

                if (res.Response.Mode == UserMode.Admin)
                {
                    await HubHelper.AddToAdminGroup <UsersHub>(id);
                }

                await HubHelper.AddToAuthorizedGroup <UsersHub>(id);

                await HubHelper.AddToAuthorizedGroup <StaffHub>(id);

                await HubHelper.AddToAuthorizedGroup <StudentsHub>(id);

                await HubHelper.AddToAuthorizedGroup <GroupsHub>(id);

                await HubHelper.AddToAuthorizedGroup <ChatHub>(id);

                usersRepository.AddSignInLogAsync(res.Response);

                Users[id] = res.Response;

                Console.WriteLine($"{Context.ConnectionId} logged in");
            }

            return(new ISTrainingPartResponse <User, LoginResponse>(res.Code, loginResponse, res.Response));
        }