1 25 package org.snipsnap.net; 26 27 import org.snipsnap.app.Application; 28 import org.snipsnap.config.Configuration; 29 import org.snipsnap.snip.Snip; 30 import org.snipsnap.snip.SnipLink; 31 import org.snipsnap.snip.SnipSpace; 32 import org.snipsnap.snip.SnipSpaceFactory; 33 import org.snipsnap.user.Permissions; 34 import org.snipsnap.user.Roles; 35 import org.snipsnap.user.User; 36 37 import javax.servlet.ServletException ; 38 import javax.servlet.http.HttpServlet ; 39 import javax.servlet.http.HttpServletRequest ; 40 import javax.servlet.http.HttpServletResponse ; 41 import java.io.IOException ; 42 43 48 public class SnipLockServlet extends HttpServlet { 49 private final static Roles ALLOWED_ROLES = new Roles("Admin:Editor"); 50 51 public void doGet(HttpServletRequest request, HttpServletResponse response) 52 throws ServletException , IOException { 53 String name = request.getParameter("name"); 54 SnipSpace space = SnipSpaceFactory.getInstance(); 55 Snip snip = space.load(name); 56 57 User user = Application.get().getUser(); 58 if (user != null && user.getRoles().containsAny(ALLOWED_ROLES)) { 59 String role = Roles.EDITOR; 60 if(user.getRoles().contains(Roles.ADMIN)) { 61 role = Roles.ADMIN; 62 } 63 64 if (request.getParameter("unlock") != null) { 65 snip.getPermissions().remove(Permissions.EDIT_SNIP, role); 66 } else { 67 snip.getPermissions().add(Permissions.EDIT_SNIP, role); 68 } 69 space.store(snip); 70 } 71 Configuration config = Application.get().getConfiguration(); 72 response.sendRedirect(config.getUrl("/space/" + SnipLink.encode(name))); 73 } 74 } | Popular Tags |