Exemple #1
0
        public async Task AddWhitelistUser(int userId, int roomId)
        {
            try
            {
                ChatHubUser user = await this.GetChatHubUserAsync();

                ChatHubUser targetUser = await this.chatHubRepository.GetUserByIdAsync(userId);

                if (user != null && targetUser != null)
                {
                    var room = this.chatHubRepository.GetChatHubRoom(roomId);
                    if (user.UserId != room.CreatorId && !Context.User.HasClaim(ClaimTypes.Role, RoleNames.Admin))
                    {
                        throw new HubException("Only room creators and administrators can add whitelist users.");
                    }

                    ChatHubWhitelistUser whitelistUser = this.chatHubRepository.AddChatHubWhitelistUser(targetUser);

                    ChatHubRoomChatHubWhitelistUser room_whitelistuser = new ChatHubRoomChatHubWhitelistUser()
                    {
                        ChatHubRoomId          = roomId,
                        ChatHubWhitelistUserId = whitelistUser.Id,
                    };
                    this.chatHubRepository.AddChatHubRoomChatHubWhitelistUser(room_whitelistuser);

                    var targetWhitelistUserClientModel = this.chatHubService.CreateChatHubWhitelistUserClientModel(whitelistUser);
                    await Clients.Group(roomId.ToString()).SendAsync("AddWhitelistUser", targetWhitelistUserClientModel, roomId);
                }
            }
            catch (Exception ex)
            {
                throw new HubException(ex.Message);
            }
        }
        public static void AddWhitelistUser(this List <ChatHubRoom> rooms, ChatHubWhitelistUser whitelistUser, int roomId)
        {
            var room = rooms.FirstOrDefault(item => item.Id == roomId);

            if (room != null && !room.WhitelistUsers.Any(item => item.Id == whitelistUser.Id))
            {
                room.WhitelistUsers.Add(whitelistUser);
            }
        }
 public ChatHubWhitelistUser CreateChatHubWhitelistUserClientModel(ChatHubWhitelistUser whitelistUser)
 {
     return(new ChatHubWhitelistUser()
     {
         Id = whitelistUser.Id,
         WhitelistUserDisplayName = whitelistUser.WhitelistUserDisplayName,
         ChatHubUserId = whitelistUser.ChatHubUserId,
     });
 }
Exemple #4
0
 public void DeleteChatHubWhitelistUser(int WhitelistUserId)
 {
     try
     {
         ChatHubWhitelistUser ChatHubWhitelistUser = db.ChatHubWhitelistUser.Where(item => item.Id == WhitelistUserId).FirstOrDefault();
         db.ChatHubWhitelistUser.Remove(ChatHubWhitelistUser);
         db.SaveChanges();
     }
     catch
     {
         throw;
     }
 }
        public static void RemoveWhitelistUser(this List <ChatHubRoom> rooms, ChatHubWhitelistUser whitelistUser, int roomId)
        {
            var room = rooms.FirstOrDefault(item => item.Id == roomId);

            if (room != null)
            {
                var user = room.WhitelistUsers.FirstOrDefault(item => item.Id == whitelistUser.Id);
                if (user != null)
                {
                    room.WhitelistUsers.Remove(user);
                }
            }
        }
Exemple #6
0
        public ChatHubWhitelistUser AddChatHubWhitelistUser(ChatHubUser targetUser)
        {
            try
            {
                ChatHubWhitelistUser ChatHubWhitelistUser = this.GetChatHubWhitelistUser(targetUser.UserId);
                if (ChatHubWhitelistUser == null)
                {
                    ChatHubWhitelistUser = new ChatHubWhitelistUser()
                    {
                        ChatHubUserId            = targetUser.UserId,
                        WhitelistUserDisplayName = targetUser.DisplayName,
                    };

                    db.ChatHubWhitelistUser.Add(ChatHubWhitelistUser);
                    db.SaveChanges();
                }
                return(ChatHubWhitelistUser);
            }
            catch
            {
                throw;
            }
        }
Exemple #7
0
        public override async Task Execute(CommandServicesContext context, CommandCallerContext callerContext, string[] args, ChatHubUser caller)
        {
            if (args.Length == 0)
            {
                await context.ChatHub.SendClientNotification("No arguments found.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System);

                return;
            }

            string targetUserName = args[0];

            ChatHubUser targetUser = await context.ChatHubRepository.GetUserByDisplayName(targetUserName);

            targetUser = targetUser == null ? await context.ChatHubRepository.GetUserByUserNameAsync(targetUserName) : targetUser;

            if (targetUser == null)
            {
                await context.ChatHub.SendClientNotification("No user found.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System);

                return;
            }

            if (!targetUser.Online())
            {
                await context.ChatHub.SendClientNotification("User not online.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System);

                return;
            }

            if (caller.UserId == targetUser.UserId)
            {
                await context.ChatHub.SendClientNotification("Calling user can not be target user.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System);

                return;
            }

            string msg = null;

            if (args.Length > 1)
            {
                msg = String.Join(" ", args.Skip(1)).Trim();
            }

            var callerRoom = context.ChatHubRepository.GetChatHubRoom(callerContext.RoomId);

            if (caller.UserId != callerRoom.CreatorId)
            {
                await context.ChatHub.SendClientNotification("Whitelist user command can be executed from room creator only.", callerContext.RoomId, callerContext.ConnectionId, caller, ChatHubMessageType.System);

                return;
            }

            if (callerRoom.Public() || callerRoom.Protected() || callerRoom.Private())
            {
                ChatHubWhitelistUser chatHubWhitelistUser = context.ChatHubRepository.AddChatHubWhitelistUser(targetUser);

                ChatHubRoomChatHubWhitelistUser room_whitelistuser = new ChatHubRoomChatHubWhitelistUser()
                {
                    ChatHubRoomId          = callerRoom.Id,
                    ChatHubWhitelistUserId = chatHubWhitelistUser.Id,
                };
                context.ChatHubRepository.AddChatHubRoomChatHubWhitelistUser(room_whitelistuser);

                foreach (var connection in caller.Connections.Active())
                {
                    await context.ChatHub.SendClientNotification("Command whitelist user succeeded.", callerContext.RoomId, connection.ConnectionId, caller, ChatHubMessageType.System);
                }
            }
        }