make the invited user if it kicked from the channed and the channel is restrected by the +i need to be invited again to join the channel again
This commit is contained in:
@@ -754,7 +754,7 @@ void Server::handleClientData(int fd) {
|
|||||||
std::map<std::string, Channel>::iterator it = channels.find(channelName);
|
std::map<std::string, Channel>::iterator it = channels.find(channelName);
|
||||||
if (it != channels.end()) {
|
if (it != channels.end()) {
|
||||||
// Channel already exists
|
// Channel already exists
|
||||||
if ((isinveted == 1 && it->second.isInvited(nick)) || it->second.isOperator(fd)) {
|
if ((isinveted == 1 && channels[channelName].isInvited(nick)) || channels[channelName].isOperator(fd)) {
|
||||||
// User is invited, create the channel
|
// User is invited, create the channel
|
||||||
std::cout << "ha huwa dkhaal l ******** lwla ***********" << std::endl;
|
std::cout << "ha huwa dkhaal l ******** lwla ***********" << std::endl;
|
||||||
createChannel(channelName, nick, fd);
|
createChannel(channelName, nick, fd);
|
||||||
@@ -823,7 +823,9 @@ void Server::handleClientData(int fd) {
|
|||||||
if (userFd != -1) {
|
if (userFd != -1) {
|
||||||
// Kick the user
|
// Kick the user
|
||||||
// kickUser(userFd);
|
// kickUser(userFd);
|
||||||
channels[channelName].ejectUser(userFd);
|
channels[channelName].ejectUserfromusers(userFd);
|
||||||
|
channels[channelName].ejectUserfromivited(userToKick);
|
||||||
|
// isinveted = 0;
|
||||||
std::string kickMessage = ":" + channels[channelName].getNickname(fd) + " KICK #" + channelName + " " + userToKick + " :" + reason + "\n";
|
std::string kickMessage = ":" + channels[channelName].getNickname(fd) + " KICK #" + channelName + " " + userToKick + " :" + reason + "\n";
|
||||||
smallbroadcastMessagefortheckick(channels[channelName].getNickname(fd), channelName, userToKick, reason);
|
smallbroadcastMessagefortheckick(channels[channelName].getNickname(fd), channelName, userToKick, reason);
|
||||||
send(fd, kickMessage.c_str(), kickMessage.length(), 0);
|
send(fd, kickMessage.c_str(), kickMessage.length(), 0);
|
||||||
|
15
channel.hpp
15
channel.hpp
@@ -130,7 +130,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ejectUser(int fd) {
|
void ejectUserfromusers(int fd) {
|
||||||
// Iterate over the map to find the user with the given file descriptor
|
// Iterate over the map to find the user with the given file descriptor
|
||||||
std::map<std::string, int>::iterator it;
|
std::map<std::string, int>::iterator it;
|
||||||
for (it = userFdMap.begin(); it != userFdMap.end(); ++it) {
|
for (it = userFdMap.begin(); it != userFdMap.end(); ++it) {
|
||||||
@@ -143,6 +143,19 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ejectUserfromivited(std::string nickname) {
|
||||||
|
// Iterate over the map to find the user with the given file descriptor
|
||||||
|
std::map<std::string, int>::iterator it;
|
||||||
|
for (it = invitedUsers.begin(); it != invitedUsers.end(); ++it) {
|
||||||
|
if (it->first == nickname) {
|
||||||
|
// Erase the user from the map
|
||||||
|
invitedUsers.erase(it);
|
||||||
|
std::cout << "the user earased " << std::endl;
|
||||||
|
return; // Exit the function after removing the user
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string getOperatorNickname(int fd) const {
|
std::string getOperatorNickname(int fd) const {
|
||||||
std::map<std::string, int>::const_iterator it;
|
std::map<std::string, int>::const_iterator it;
|
||||||
for (it = operators.begin(); it != operators.end(); ++it) {
|
for (it = operators.begin(); it != operators.end(); ++it) {
|
||||||
|
Reference in New Issue
Block a user