|
|
@ -0,0 +1,114 @@ |
|
|
|
package com.iflytop.digester.underframework.controller; |
|
|
|
import com.iflytop.digester.underframework.dao.model.UfMdbUser; |
|
|
|
import com.iflytop.digester.underframework.dao.record.UfActiveRecord; |
|
|
|
import com.iflytop.digester.underframework.dao.record.UfActiveRecordCriteria; |
|
|
|
import jakarta.servlet.http.HttpServletRequest; |
|
|
|
import org.springframework.stereotype.Controller; |
|
|
|
import org.springframework.web.bind.annotation.PostMapping; |
|
|
|
import org.springframework.web.bind.annotation.RequestBody; |
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
import org.springframework.web.bind.annotation.ResponseBody; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.UUID; |
|
|
|
@Controller |
|
|
|
public class UfApiUser extends UfApiControllerBase { |
|
|
|
@ResponseBody |
|
|
|
@RequestMapping("/api/user/login") |
|
|
|
public UfApiResponse login(@RequestBody Map<String,Object> params) { |
|
|
|
String account = (String)params.get("account"); |
|
|
|
String password = (String)params.get("password"); |
|
|
|
|
|
|
|
var user = UfActiveRecord.findOne(UfMdbUser.class, Map.of("account", account)); |
|
|
|
if ( null == user || !user.matchPassword(password) ) { |
|
|
|
return this.error("无效的账号或密码"); |
|
|
|
} |
|
|
|
|
|
|
|
user.accessToken = UUID.randomUUID().toString(); |
|
|
|
user.accessTokenExpiredAt = (int)(System.currentTimeMillis() / 1000) + 3600 * 24; |
|
|
|
user.save(); |
|
|
|
return this.success(Map.of( |
|
|
|
"accessToken", user.accessToken, |
|
|
|
"accessTokenExpiredAt", user.accessTokenExpiredAt |
|
|
|
)); |
|
|
|
} |
|
|
|
|
|
|
|
@ResponseBody |
|
|
|
@RequestMapping("/api/user/logout") |
|
|
|
public UfApiResponse logout( HttpServletRequest request ) { |
|
|
|
String accessToken = request.getHeader("App-Access-Token"); |
|
|
|
var user = UfActiveRecord.findOne(UfMdbUser.class, Map.of("accessToken", accessToken)); |
|
|
|
if ( null == user ) { |
|
|
|
return this.success(); |
|
|
|
} |
|
|
|
|
|
|
|
user.accessToken = ""; |
|
|
|
user.accessTokenExpiredAt = 0; |
|
|
|
user.save(); |
|
|
|
return this.success(); |
|
|
|
} |
|
|
|
|
|
|
|
@ResponseBody |
|
|
|
@PostMapping("/api/user/save") |
|
|
|
public UfApiResponse save( HttpServletRequest request, @RequestBody Map<String,Object> params ) { |
|
|
|
UfMdbUser curUser = this.getUserFromRequest(request); |
|
|
|
String id = (String)params.get("id"); |
|
|
|
Map<String,Object> data = (Map<String,Object>)params.get("data"); |
|
|
|
|
|
|
|
var user = new UfMdbUser(); |
|
|
|
user.password = ""; |
|
|
|
user.salt = UUID.randomUUID().toString().substring(0, 8); |
|
|
|
user.createdAt = (int)(System.currentTimeMillis() / 1000); |
|
|
|
user.createdBy = curUser.id; |
|
|
|
if ( null != id ) { |
|
|
|
user = UfActiveRecord.findOne(UfMdbUser.class, id); |
|
|
|
} |
|
|
|
|
|
|
|
user.setAttributes(data); |
|
|
|
user.save(); |
|
|
|
return this.success(); |
|
|
|
} |
|
|
|
|
|
|
|
@ResponseBody |
|
|
|
@PostMapping("/api/user/delete") |
|
|
|
public UfApiResponse delete( @RequestBody Map<String,Object> params ) { |
|
|
|
String id = (String)params.get("id"); |
|
|
|
var user = UfActiveRecord.findOne(UfMdbUser.class, id); |
|
|
|
if ( null == user ) { |
|
|
|
return this.success(); |
|
|
|
} |
|
|
|
|
|
|
|
user.delete(); |
|
|
|
return this.success(); |
|
|
|
} |
|
|
|
|
|
|
|
@ResponseBody |
|
|
|
@PostMapping("/api/user/password-update") |
|
|
|
public UfApiResponse updatePassword( @RequestBody Map<String,Object> params ) { |
|
|
|
String id = (String)params.get("id"); |
|
|
|
String password = (String)params.get("password"); |
|
|
|
var user = UfActiveRecord.findOne(UfMdbUser.class, id); |
|
|
|
if ( null == user ) { |
|
|
|
return this.error("无效的用户"); |
|
|
|
} |
|
|
|
user.password = user.hashPassword(password); |
|
|
|
user.save(); |
|
|
|
return this.success(); |
|
|
|
} |
|
|
|
|
|
|
|
@ResponseBody |
|
|
|
@RequestMapping("/api/user/list") |
|
|
|
public UfApiResponse list() { |
|
|
|
var criteria = new UfActiveRecordCriteria(); |
|
|
|
criteria.limit = 10; |
|
|
|
var users = UfActiveRecord.find(UfMdbUser.class, criteria); |
|
|
|
return this.success(Map.of("list",users)); |
|
|
|
} |
|
|
|
|
|
|
|
@ResponseBody |
|
|
|
@RequestMapping("/api/user/current-get") |
|
|
|
public UfApiResponse currentGet( HttpServletRequest request ) { |
|
|
|
String accessToken = request.getHeader("App-Access-Token"); |
|
|
|
var user = UfActiveRecord.findOne(UfMdbUser.class, Map.of("accessToken", accessToken)); |
|
|
|
return this.success(user); |
|
|
|
} |
|
|
|
} |