package net.wendal.nutzdemo.module; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.nutz.dao.Dao; import org.nutz.dao.QueryResult; import org.nutz.dao.pager.Pager; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Lang; import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; import org.nutz.log.Log; import org.nutz.log.Logs; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Attr; import org.nutz.mvc.annotation.By; import org.nutz.mvc.annotation.DELETE; import org.nutz.mvc.annotation.Filters; import org.nutz.mvc.annotation.GET; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.POST; import org.nutz.mvc.annotation.Param; import org.nutz.mvc.filter.CheckSession; import net.wendal.nutzdemo.bean.User; @Filters(@By(type = CheckSession.class, args = {"me", "/user/login"})) @Ok("json:{locked:'password|salt'}") @At("/user") @IocBean public class UserModule { private static final Log log = Logs.get(); @Inject protected Dao dao; @Filters @At public int count() { return dao.count(User.class); } @Filters @GET @At({"/login"}) @Ok("jsp:jsp.user.login") public void loginPage() {} @GET @At({"/", "/index"}) @Ok("jsp:jsp.user.index") public void indexPage() {} @Filters @POST @At public NutMap login(String username, String password, HttpSession session) { NutMap re = new NutMap("ok", false); if (Strings.isBlank(username) || Strings.isBlank(password)) { log.debug("username or password is null"); return re.setv("msg", "用户名或密码不能为空"); } User user = dao.fetch(User.class, username); if (user == null) { log.debug("no such user = " + username); return re.setv("msg", "没有该用户"); } String tmp = Lang.digest("SHA-256", user.getSalt() + password); if (!tmp.equals(user.getPassword())) { log.debug("password is wrong"); return re.setv("msg", "密码错误"); } session.setAttribute("me", user); return re.setv("ok", true); } @Filters @At @Ok(">>:/user/login") public void logout(HttpServletRequest req) { HttpSession session = req.getSession(false); if (session != null) session.invalidate(); } @Filters @At public User me(@Attr("me") User user) { return user; } @At public QueryResult list(@Param("..") Pager pager) { List<User> users = dao.query(User.class, null, pager); pager.setRecordCount(dao.count(User.class)); QueryResult qr = new QueryResult(users, pager); return qr; } @POST @At public NutMap add(@Param("..") User user) { NutMap re = new NutMap("ok", false); if (Strings.isBlank(user.getName())) return re.setv("msg", "名字不能是空"); if (Strings.isBlank(user.getPassword())) return re.setv("msg", "密码不能是空"); dao.insert(user); return re.setv("ok", true); } @POST @At public NutMap update(@Param("..") User user) { if (user.getId() > 0) dao.update(user, "age"); return new NutMap("ok", user.getId() > 0); } @DELETE @At("/?") public NutMap delete(int userId) { if (userId == 1) return new NutMap("ok", false); return new NutMap("ok", dao.delete(User.class, userId) == 1); } }