1 package usecase.user;
2
3 import common.http.ParameterConverter;
4 import common.http.error.JSONError;
5 import common.http.interceptor.InterceptableServlet;
6 import usecase.auth.AuthorizationConstraints;
7
8 import javax.inject.Inject;
9 import javax.servlet.ServletException;
10 import javax.servlet.annotation.WebServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import java.io.IOException;
14 import java.time.Instant;
15 import java.time.ZoneOffset;
16
17 import static usecase.auth.AuthorizationConstraints.Types.ADMINS_ONLY;
18
19
20
21
22 @WebServlet("/admin/addban")
23 @AuthorizationConstraints(ADMINS_ONLY)
24 class AddBanServlet extends InterceptableServlet {
25 @Inject private BanService service;
26
27 @Override
28 @JSONError
29 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
30 doPost(request,response);
31 }
32
33 @Override
34 @JSONError
35 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
36 ParameterConverter converter = new ParameterConverter(request);
37 Instant endDate = converter.getDateParameter("endDate")
38 .map(date -> date.atStartOfDay().toInstant(ZoneOffset.UTC))
39 .orElse(null);
40 int userId = converter.getIntParameter("userId").orElse(0);
41 service.addBan(endDate,userId);
42 }
43 }