|
|
|
|
@ -48,6 +48,38 @@ public class DocumentApi extends BaseHandler {
@@ -48,6 +48,38 @@ public class DocumentApi extends BaseHandler {
|
|
|
|
|
users = companyService.userService(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean doDelete(Path path, HttpExchange ex) throws IOException { |
|
|
|
|
addCors(ex); |
|
|
|
|
try { |
|
|
|
|
Optional<Token> token = SessionToken.from(ex).map(Token::of); |
|
|
|
|
var user = users.loadUser(token); |
|
|
|
|
if (user.isEmpty()) return unauthorized(ex); |
|
|
|
|
var head = path.pop(); |
|
|
|
|
return switch (head){ |
|
|
|
|
default -> { |
|
|
|
|
try { |
|
|
|
|
yield deleteDocument(ex,Long.parseLong(head),user.get()); |
|
|
|
|
} catch (NumberFormatException ignored) {} |
|
|
|
|
yield super.doDelete(path,ex); |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
} catch (UmbrellaException e) { |
|
|
|
|
return send(ex,e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean deleteDocument(HttpExchange ex, long docId, UmbrellaUser user) throws IOException, UmbrellaException { |
|
|
|
|
var doc = db.loadDoc(docId); |
|
|
|
|
var companyId = doc.companyId(); |
|
|
|
|
var company = companies.get(companyId); |
|
|
|
|
var members = companies.getMembers(companyId); |
|
|
|
|
var isMember = false; |
|
|
|
|
for (var member : members) isMember |= user.equals(member); |
|
|
|
|
if (!isMember) return sendContent(ex,HTTP_FORBIDDEN,"You are mot a member of company "+doc.companyId()); |
|
|
|
|
return sendContent(ex,db.deleteDoc(docId)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean doGet(Path path, HttpExchange ex) throws IOException { |
|
|
|
|
addCors(ex); |
|
|
|
|
@ -73,6 +105,11 @@ public class DocumentApi extends BaseHandler {
@@ -73,6 +105,11 @@ public class DocumentApi extends BaseHandler {
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean doOptions(Path path, HttpExchange ex) throws IOException { |
|
|
|
|
return sendEmptyResponse(HTTP_OK,addCors(ex)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean doPost(Path path, HttpExchange ex) throws IOException { |
|
|
|
|
addCors(ex); |
|
|
|
|
|