@@ -15,7 +15,7 @@ import soulfind.server.server : Server;
1515import soulfind.server.user : User;
1616import std.array : array;
1717import std.conv : text;
18- import std.datetime : Clock , SysTime;
18+ import std.datetime : Clock , seconds, SysTime;
1919import std.socket : InternetAddress ;
2020import std.stdio : writeln;
2121
@@ -562,18 +562,20 @@ final class MessageHandler
562562 if (! msg.is_valid)
563563 break ;
564564
565- auto target_user = server.get_user(msg.username);
566- if (target_user is null )
567- break ;
568-
569- const duration = msg.duration;
570- if (duration.total! " days" < 1 || duration > user.privileges)
565+ const duration = (
566+ msg.duration < user.privileges
567+ ? msg.duration : user.privileges
568+ );
569+ if (duration == 0. seconds)
571570 break ;
572571
572+ server.db.remove_user_privileges(user.username, duration);
573573 server.db.add_user_privileges(msg.username, duration);
574- target_user.refresh_privileges();
575574
576- server.db.remove_user_privileges(user.username, duration);
575+ auto target_user = server.get_user(msg.username);
576+ if (target_user ! is null )
577+ target_user.refresh_privileges();
578+
577579 user.refresh_privileges();
578580 break ;
579581
0 commit comments