Refine panic framework.
This commit is contained in:
parent
b55a993b35
commit
84703a8971
@ -117,22 +117,6 @@ func (this *BaseController) Success(data interface{}) *WebResult {
|
||||
return webResult
|
||||
}
|
||||
|
||||
//返回错误的结果。
|
||||
func (this *BaseController) Error(err interface{}) *WebResult {
|
||||
var webResult *WebResult = nil
|
||||
if value, ok := err.(string); ok {
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: value}
|
||||
} else if _, ok := err.(int); ok {
|
||||
webResult = ConstWebResult(CODE_WRAPPER_UNKNOWN)
|
||||
} else if value, ok := err.(*WebResult); ok {
|
||||
webResult = value
|
||||
} else if value, ok := err.(error); ok {
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: value.Error()}
|
||||
} else {
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: "服务器未知错误"}
|
||||
}
|
||||
return webResult
|
||||
}
|
||||
|
||||
//允许跨域请求
|
||||
func (this *BaseController) allowCORS(writer http.ResponseWriter) {
|
||||
|
28
rest/bean.go
28
rest/bean.go
@ -6,8 +6,7 @@ import (
|
||||
|
||||
type IBean interface {
|
||||
Init()
|
||||
PanicError(err error);
|
||||
PanicWebError(msg string, code int);
|
||||
PanicError(err error)
|
||||
}
|
||||
|
||||
type Bean struct {
|
||||
@ -18,16 +17,31 @@ func (this *Bean) Init() {
|
||||
this.logger = LOGGER
|
||||
}
|
||||
|
||||
//处理错误的统一方法
|
||||
//处理错误的统一方法 可以省去if err!=nil 这段代码
|
||||
func (this *Bean) PanicError(err error) {
|
||||
if err != nil {
|
||||
panic(&WebError{Msg: err.Error(), Code: http.StatusInternalServerError})
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
//处理错误的统一方法
|
||||
func (this *Bean) PanicWebError(msg string, httpStatusCode int) {
|
||||
panic(&WebError{Msg: msg, Code: httpStatusCode})
|
||||
//请求参数有问题
|
||||
func (this *Bean) PanicBadRequest(msg string) {
|
||||
panic(CustomWebResult(CODE_WRAPPER_BAD_REQUEST, msg))
|
||||
}
|
||||
|
||||
//没有权限
|
||||
func (this *Bean) PanicUnauthorized(msg string) {
|
||||
panic(CustomWebResult(CODE_WRAPPER_UNAUTHORIZED, msg))
|
||||
}
|
||||
|
||||
//没有找到
|
||||
func (this *Bean) PanicNotFound(msg string) {
|
||||
panic(CustomWebResult(CODE_WRAPPER_NOT_FOUND, msg))
|
||||
}
|
||||
|
||||
//服务器内部出问题
|
||||
func (this *Bean) PanicServer(msg string) {
|
||||
panic(CustomWebResult(CODE_WRAPPER_UNKNOWN, msg))
|
||||
}
|
||||
|
||||
//能找到一个user就找到一个
|
||||
|
@ -46,7 +46,7 @@ func (this *FootprintController) Detail(writer http.ResponseWriter, request *htt
|
||||
|
||||
uuid := request.FormValue("uuid")
|
||||
if uuid == "" {
|
||||
return this.Error("图片缓存的uuid必填")
|
||||
this.PanicBadRequest("图片缓存的uuid必填")
|
||||
}
|
||||
|
||||
footprint := this.footprintService.Detail(uuid)
|
||||
@ -112,18 +112,14 @@ func (this *FootprintController) Delete(writer http.ResponseWriter, request *htt
|
||||
|
||||
uuid := request.FormValue("uuid")
|
||||
if uuid == "" {
|
||||
return this.Error("图片缓存的uuid必填")
|
||||
this.PanicBadRequest("uuid必填")
|
||||
}
|
||||
|
||||
footprint := this.footprintDao.FindByUuid(uuid)
|
||||
|
||||
//判断图片缓存的所属人是否正确
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && footprint.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
if footprint != nil {
|
||||
this.footprintDao.Delete(footprint)
|
||||
}
|
||||
|
||||
this.footprintDao.Delete(footprint)
|
||||
|
||||
return this.Success("删除成功!")
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ func (this *ImageCacheController) Detail(writer http.ResponseWriter, request *ht
|
||||
|
||||
uuid := request.FormValue("uuid")
|
||||
if uuid == "" {
|
||||
return this.Error("图片缓存的uuid必填")
|
||||
this.PanicBadRequest("图片缓存的uuid必填")
|
||||
}
|
||||
|
||||
imageCache := this.imageCacheService.Detail(uuid)
|
||||
@ -115,7 +115,7 @@ func (this *ImageCacheController) Delete(writer http.ResponseWriter, request *ht
|
||||
|
||||
uuid := request.FormValue("uuid")
|
||||
if uuid == "" {
|
||||
return this.Error("图片缓存的uuid必填")
|
||||
this.PanicBadRequest("图片缓存的uuid必填")
|
||||
}
|
||||
|
||||
imageCache := this.imageCacheDao.FindByUuid(uuid)
|
||||
@ -123,7 +123,7 @@ func (this *ImageCacheController) Delete(writer http.ResponseWriter, request *ht
|
||||
//判断图片缓存的所属人是否正确
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && imageCache.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
this.imageCacheDao.Delete(imageCache)
|
||||
@ -136,7 +136,7 @@ func (this *ImageCacheController) DeleteBatch(writer http.ResponseWriter, reques
|
||||
|
||||
uuids := request.FormValue("uuids")
|
||||
if uuids == "" {
|
||||
return this.Error("图片缓存的uuids必填")
|
||||
this.PanicBadRequest("图片缓存的uuids必填")
|
||||
}
|
||||
|
||||
uuidArray := strings.Split(uuids, ",")
|
||||
@ -148,7 +148,7 @@ func (this *ImageCacheController) DeleteBatch(writer http.ResponseWriter, reques
|
||||
//判断图片缓存的所属人是否正确
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && imageCache.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
this.imageCacheDao.Delete(imageCache)
|
||||
|
@ -63,7 +63,7 @@ func (this *MatterController) Detail(writer http.ResponseWriter, request *http.R
|
||||
|
||||
uuid := request.FormValue("uuid")
|
||||
if uuid == "" {
|
||||
return this.Error("文件的uuid必填")
|
||||
this.PanicBadRequest("文件的uuid必填")
|
||||
}
|
||||
|
||||
matter := this.matterService.Detail(uuid)
|
||||
@ -89,14 +89,14 @@ func (this *MatterController) CreateDirectory(writer http.ResponseWriter, reques
|
||||
name = strings.TrimSpace(name)
|
||||
//验证参数。
|
||||
if name == "" {
|
||||
return this.Error("name参数必填,并且不能全是空格")
|
||||
this.PanicBadRequest("name参数必填,并且不能全是空格")
|
||||
}
|
||||
if len(name) > 200 {
|
||||
panic("name长度不能超过200")
|
||||
}
|
||||
|
||||
if m, _ := regexp.MatchString(`[<>|*?/\\]`, name); m {
|
||||
return this.Error(`名称中不能包含以下特殊符号:< > | * ? / \`)
|
||||
this.PanicBadRequest(`名称中不能包含以下特殊符号:< > | * ? / \`)
|
||||
}
|
||||
|
||||
userUuid := request.FormValue("userUuid")
|
||||
@ -133,7 +133,7 @@ func (this *MatterController) CreateDirectory(writer http.ResponseWriter, reques
|
||||
count := this.matterDao.CountByUserUuidAndPuuidAndDirAndName(user.Uuid, puuid, true, name)
|
||||
|
||||
if count > 0 {
|
||||
return this.Error("【" + name + "】已经存在了,请使用其他名称。")
|
||||
this.PanicBadRequest("【" + name + "】已经存在了,请使用其他名称。")
|
||||
}
|
||||
|
||||
matter := &Matter{
|
||||
@ -240,7 +240,7 @@ func (this *MatterController) Upload(writer http.ResponseWriter, request *http.R
|
||||
} else {
|
||||
puuid = request.FormValue("puuid")
|
||||
if puuid == "" {
|
||||
return this.Error("puuid必填")
|
||||
this.PanicBadRequest("puuid必填")
|
||||
} else {
|
||||
if puuid != "root" {
|
||||
//找出上一级的文件夹。
|
||||
@ -283,7 +283,7 @@ func (this *MatterController) Crawl(writer http.ResponseWriter, request *http.Re
|
||||
|
||||
puuid := request.FormValue("puuid")
|
||||
if puuid == "" {
|
||||
return this.Error("puuid必填")
|
||||
this.PanicBadRequest("puuid必填")
|
||||
} else {
|
||||
if puuid != "root" {
|
||||
//找出上一级的文件夹。
|
||||
@ -317,7 +317,7 @@ func (this *MatterController) Delete(writer http.ResponseWriter, request *http.R
|
||||
|
||||
uuid := request.FormValue("uuid")
|
||||
if uuid == "" {
|
||||
return this.Error("文件的uuid必填")
|
||||
this.PanicBadRequest("文件的uuid必填")
|
||||
}
|
||||
|
||||
matter := this.matterDao.FindByUuid(uuid)
|
||||
@ -325,7 +325,7 @@ func (this *MatterController) Delete(writer http.ResponseWriter, request *http.R
|
||||
//判断文件的所属人是否正确
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && matter.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
this.matterDao.Delete(matter)
|
||||
@ -338,7 +338,7 @@ func (this *MatterController) DeleteBatch(writer http.ResponseWriter, request *h
|
||||
|
||||
uuids := request.FormValue("uuids")
|
||||
if uuids == "" {
|
||||
return this.Error("文件的uuids必填")
|
||||
this.PanicBadRequest("文件的uuids必填")
|
||||
}
|
||||
|
||||
uuidArray := strings.Split(uuids, ",")
|
||||
@ -350,7 +350,7 @@ func (this *MatterController) DeleteBatch(writer http.ResponseWriter, request *h
|
||||
//判断文件的所属人是否正确
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && matter.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
this.matterDao.Delete(matter)
|
||||
@ -368,10 +368,10 @@ func (this *MatterController) Rename(writer http.ResponseWriter, request *http.R
|
||||
|
||||
//验证参数。
|
||||
if name == "" {
|
||||
return this.Error("name参数必填")
|
||||
this.PanicBadRequest("name参数必填")
|
||||
}
|
||||
if m, _ := regexp.MatchString(`[<>|*?/\\]`, name); m {
|
||||
return this.Error(`名称中不能包含以下特殊符号:< > | * ? / \`)
|
||||
this.PanicBadRequest(`名称中不能包含以下特殊符号:< > | * ? / \`)
|
||||
}
|
||||
|
||||
if len(name) > 200 {
|
||||
@ -383,18 +383,18 @@ func (this *MatterController) Rename(writer http.ResponseWriter, request *http.R
|
||||
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && matter.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
if name == matter.Name {
|
||||
return this.Error("新名称和旧名称一样,操作失败!")
|
||||
this.PanicBadRequest("新名称和旧名称一样,操作失败!")
|
||||
}
|
||||
|
||||
//判断同级文件夹中是否有同名的文件
|
||||
count := this.matterDao.CountByUserUuidAndPuuidAndDirAndName(user.Uuid, matter.Puuid, matter.Dir, name)
|
||||
|
||||
if count > 0 {
|
||||
return this.Error("【" + name + "】已经存在了,请使用其他名称。")
|
||||
this.PanicBadRequest("【" + name + "】已经存在了,请使用其他名称。")
|
||||
}
|
||||
|
||||
matter.Name = name
|
||||
@ -421,7 +421,7 @@ func (this *MatterController) ChangePrivacy(writer http.ResponseWriter, request
|
||||
//权限验证
|
||||
user := this.checkUser(writer, request)
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && matter.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
matter.Privacy = privacy
|
||||
@ -439,7 +439,7 @@ func (this *MatterController) Move(writer http.ResponseWriter, request *http.Req
|
||||
var srcUuids []string
|
||||
//验证参数。
|
||||
if srcUuidsStr == "" {
|
||||
return this.Error("srcUuids参数必填")
|
||||
this.PanicBadRequest("srcUuids参数必填")
|
||||
} else {
|
||||
srcUuids = strings.Split(srcUuidsStr, ",")
|
||||
}
|
||||
@ -458,13 +458,13 @@ func (this *MatterController) Move(writer http.ResponseWriter, request *http.Req
|
||||
//验证dest是否有问题
|
||||
var destMatter *Matter
|
||||
if destUuid == "" {
|
||||
return this.Error("destUuid参数必填")
|
||||
this.PanicBadRequest("destUuid参数必填")
|
||||
} else {
|
||||
if destUuid != "root" {
|
||||
destMatter = this.matterService.Detail(destUuid)
|
||||
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && destMatter.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -476,18 +476,18 @@ func (this *MatterController) Move(writer http.ResponseWriter, request *http.Req
|
||||
srcMatter := this.matterDao.CheckByUuid(uuid)
|
||||
|
||||
if user.Role != USER_ROLE_ADMINISTRATOR && srcMatter.UserUuid != user.Uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
if srcMatter.Puuid == destUuid {
|
||||
return this.Error("没有进行移动,操作无效!")
|
||||
this.PanicBadRequest("没有进行移动,操作无效!")
|
||||
}
|
||||
|
||||
//判断同级文件夹中是否有同名的文件
|
||||
count := this.matterDao.CountByUserUuidAndPuuidAndDirAndName(user.Uuid, destUuid, srcMatter.Dir, srcMatter.Name)
|
||||
|
||||
if count > 0 {
|
||||
return this.Error("【" + srcMatter.Name + "】在目标文件夹已经存在了,操作失败。")
|
||||
this.PanicBadRequest("【" + srcMatter.Name + "】在目标文件夹已经存在了,操作失败。")
|
||||
}
|
||||
|
||||
//判断和目标文件夹是否是同一个主人。
|
||||
|
@ -7,12 +7,12 @@ import (
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
"net/textproto"
|
||||
"net/url"
|
||||
"os"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
"net/url"
|
||||
)
|
||||
|
||||
//@Service
|
||||
@ -451,7 +451,7 @@ func (this *MatterService) DownloadFile(
|
||||
//显示文件大小。
|
||||
fileInfo, err := diskFile.Stat()
|
||||
if err != nil {
|
||||
this.PanicWebError(err.Error(), http.StatusInternalServerError)
|
||||
this.PanicServer("无法从磁盘中获取文件信息")
|
||||
}
|
||||
|
||||
modifyTime := fileInfo.ModTime()
|
||||
@ -486,8 +486,7 @@ func (this *MatterService) DownloadFile(
|
||||
ctype = http.DetectContentType(buf[:n])
|
||||
_, err := diskFile.Seek(0, os.SEEK_SET) // rewind to output whole file
|
||||
if err != nil {
|
||||
this.PanicWebError("无法准确定位文件", http.StatusInternalServerError)
|
||||
return
|
||||
this.PanicServer("无法准确定位文件")
|
||||
}
|
||||
}
|
||||
writer.Header().Set("Content-Type", ctype)
|
||||
@ -503,9 +502,7 @@ func (this *MatterService) DownloadFile(
|
||||
if size >= 0 {
|
||||
ranges, err := this.parseRange(rangeReq, size)
|
||||
if err != nil {
|
||||
panic("range header出错")
|
||||
this.PanicWebError("range header error", http.StatusRequestedRangeNotSatisfiable)
|
||||
return
|
||||
panic(CustomWebResult(CODE_WRAPPER_RANGE_NOT_SATISFIABLE, "range header出错"))
|
||||
}
|
||||
if this.sumRangesSize(ranges) > size {
|
||||
// The total number of bytes in all the ranges
|
||||
@ -529,8 +526,7 @@ func (this *MatterService) DownloadFile(
|
||||
// be sent using the multipart/byteranges media type."
|
||||
ra := ranges[0]
|
||||
if _, err := diskFile.Seek(ra.start, io.SeekStart); err != nil {
|
||||
this.PanicWebError(err.Error(), http.StatusRequestedRangeNotSatisfiable)
|
||||
return
|
||||
panic(CustomWebResult(CODE_WRAPPER_RANGE_NOT_SATISFIABLE, "range header出错"))
|
||||
}
|
||||
sendSize = ra.length
|
||||
code = http.StatusPartialContent
|
||||
|
@ -50,35 +50,26 @@ func NewRouter() *Router {
|
||||
func (this *Router) GlobalPanicHandler(writer http.ResponseWriter, request *http.Request, startTime time.Time) {
|
||||
if err := recover(); err != nil {
|
||||
|
||||
LOGGER.Error(fmt.Sprintf("全局异常: %v", err))
|
||||
LOGGER.Error("错误: %v", err)
|
||||
|
||||
var webResult *WebResult = nil
|
||||
if value, ok := err.(string); ok {
|
||||
writer.WriteHeader(http.StatusBadRequest)
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: value}
|
||||
} else if _, ok := err.(int); ok {
|
||||
writer.WriteHeader(http.StatusBadRequest)
|
||||
webResult = ConstWebResult(CODE_WRAPPER_UNKNOWN)
|
||||
//一个字符串,默认是请求错误。
|
||||
webResult = CustomWebResult(CODE_WRAPPER_BAD_REQUEST, value)
|
||||
} else if value, ok := err.(*WebResult); ok {
|
||||
writer.WriteHeader(http.StatusBadRequest)
|
||||
//一个WebResult对象
|
||||
webResult = value
|
||||
} else if value, ok := err.(WebResult); ok {
|
||||
writer.WriteHeader(http.StatusBadRequest)
|
||||
webResult = &value
|
||||
} else if value, ok := err.(*WebError); ok {
|
||||
writer.WriteHeader(value.Code)
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: value.Msg}
|
||||
} else if value, ok := err.(WebError); ok {
|
||||
writer.WriteHeader((&value).Code)
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: (&value).Msg}
|
||||
} else if value, ok := err.(error); ok {
|
||||
writer.WriteHeader(http.StatusBadRequest)
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: value.Error()}
|
||||
//一个普通的错误对象
|
||||
webResult = CustomWebResult(CODE_WRAPPER_UNKNOWN, value.Error())
|
||||
} else {
|
||||
writer.WriteHeader(http.StatusInternalServerError)
|
||||
webResult = &WebResult{Code: CODE_WRAPPER_UNKNOWN.Code, Msg: "服务器未知错误"}
|
||||
//其他不能识别的内容
|
||||
webResult = ConstWebResult(CODE_WRAPPER_UNKNOWN)
|
||||
}
|
||||
|
||||
//修改http code码
|
||||
writer.WriteHeader(FetchHttpStatus(webResult.Code))
|
||||
|
||||
//输出的是json格式 返回的内容申明是json,utf-8
|
||||
writer.Header().Set("Content-Type", "application/json;charset=UTF-8")
|
||||
|
||||
@ -86,13 +77,14 @@ func (this *Router) GlobalPanicHandler(writer http.ResponseWriter, request *http
|
||||
var json = jsoniter.ConfigCompatibleWithStandardLibrary
|
||||
b, _ := json.Marshal(webResult)
|
||||
|
||||
//错误情况记录。
|
||||
go this.footprintService.Trace(writer, request, time.Now().Sub(startTime), false)
|
||||
|
||||
//写到输出流中
|
||||
_, err := fmt.Fprintf(writer, string(b))
|
||||
if err != nil {
|
||||
fmt.Printf("输出结果时出错了\n")
|
||||
}
|
||||
|
||||
//错误情况记录。
|
||||
go this.footprintService.Trace(writer, request, time.Now().Sub(startTime), false)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -48,17 +48,17 @@ func (this *UserController) Login(writer http.ResponseWriter, request *http.Requ
|
||||
|
||||
if "" == email || "" == password {
|
||||
|
||||
return this.Error("请输入邮箱和密码")
|
||||
this.PanicBadRequest("请输入邮箱和密码")
|
||||
}
|
||||
|
||||
user := this.userDao.FindByEmail(email)
|
||||
if user == nil {
|
||||
|
||||
return this.Error("邮箱或密码错误")
|
||||
this.PanicBadRequest("邮箱或密码错误")
|
||||
} else {
|
||||
if !MatchBcrypt(password, user.Password) {
|
||||
|
||||
return this.Error("邮箱或密码错误")
|
||||
this.PanicBadRequest("邮箱或密码错误")
|
||||
}
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ func (this *UserController) Edit(writer http.ResponseWriter, request *http.Reque
|
||||
user.SizeLimit = sizeLimit
|
||||
} else {
|
||||
if currentUser.Uuid != uuid {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
}
|
||||
|
||||
@ -297,11 +297,11 @@ func (this *UserController) Disable(writer http.ResponseWriter, request *http.Re
|
||||
|
||||
loginUser := this.checkUser(writer, request)
|
||||
if uuid == loginUser.Uuid {
|
||||
return this.Error("你不能操作自己的状态。")
|
||||
this.PanicBadRequest("你不能操作自己的状态。")
|
||||
}
|
||||
|
||||
if user.Status == USER_STATUS_DISABLED {
|
||||
return this.Error("用户已经被禁用,操作无效。")
|
||||
this.PanicBadRequest("用户已经被禁用,操作无效。")
|
||||
}
|
||||
|
||||
user.Status = USER_STATUS_DISABLED
|
||||
@ -320,11 +320,11 @@ func (this *UserController) Enable(writer http.ResponseWriter, request *http.Req
|
||||
user := this.userDao.CheckByUuid(uuid)
|
||||
loginUser := this.checkUser(writer, request)
|
||||
if uuid == loginUser.Uuid {
|
||||
return this.Error("你不能操作自己的状态。")
|
||||
this.PanicBadRequest("你不能操作自己的状态。")
|
||||
}
|
||||
|
||||
if user.Status == USER_STATUS_OK {
|
||||
return this.Error("用户已经是正常状态,操作无效。")
|
||||
this.PanicBadRequest("用户已经是正常状态,操作无效。")
|
||||
}
|
||||
|
||||
user.Status = USER_STATUS_OK
|
||||
@ -341,7 +341,7 @@ func (this *UserController) ChangePassword(writer http.ResponseWriter, request *
|
||||
oldPassword := request.FormValue("oldPassword")
|
||||
newPassword := request.FormValue("newPassword")
|
||||
if oldPassword == "" || newPassword == "" {
|
||||
return this.Error("旧密码和新密码都不能为空")
|
||||
this.PanicBadRequest("旧密码和新密码都不能为空")
|
||||
}
|
||||
|
||||
user := this.checkUser(writer, request)
|
||||
@ -352,7 +352,7 @@ func (this *UserController) ChangePassword(writer http.ResponseWriter, request *
|
||||
}
|
||||
|
||||
if !MatchBcrypt(oldPassword, user.Password) {
|
||||
return this.Error("旧密码不正确!")
|
||||
this.PanicBadRequest("旧密码不正确!")
|
||||
}
|
||||
|
||||
user.Password = GetBcrypt(newPassword)
|
||||
@ -368,16 +368,16 @@ func (this *UserController) ResetPassword(writer http.ResponseWriter, request *h
|
||||
userUuid := request.FormValue("userUuid")
|
||||
password := request.FormValue("password")
|
||||
if userUuid == "" {
|
||||
return this.Error("用户不能为空")
|
||||
this.PanicBadRequest("用户不能为空")
|
||||
}
|
||||
if password == "" {
|
||||
return this.Error("密码不能为空")
|
||||
this.PanicBadRequest("密码不能为空")
|
||||
}
|
||||
|
||||
currentUser := this.checkUser(writer, request)
|
||||
|
||||
if currentUser.Role != USER_ROLE_ADMINISTRATOR {
|
||||
return this.Error(CODE_WRAPPER_UNAUTHORIZED)
|
||||
this.PanicUnauthorized("没有权限")
|
||||
}
|
||||
|
||||
user := this.userDao.CheckByUuid(userUuid)
|
||||
|
@ -1,10 +0,0 @@
|
||||
package rest
|
||||
|
||||
type WebError struct {
|
||||
Code int `json:"code"`
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
func (this *WebError) Error() string {
|
||||
return this.Msg
|
||||
}
|
@ -30,6 +30,7 @@ var (
|
||||
CODE_WRAPPER_USER_DISABLED = &CodeWrapper{Code: "USER_DISABLED", HttpStatus: http.StatusForbidden, Description: "账户被禁用,禁止访问"}
|
||||
CODE_WRAPPER_UNAUTHORIZED = &CodeWrapper{Code: "LOGIN", HttpStatus: http.StatusUnauthorized, Description: "没有权限,禁止访问"}
|
||||
CODE_WRAPPER_NOT_FOUND = &CodeWrapper{Code: "NOT_FOUND", HttpStatus: http.StatusNotFound, Description: "内容不存在"}
|
||||
CODE_WRAPPER_RANGE_NOT_SATISFIABLE = &CodeWrapper{Code: "RANGE_NOT_SATISFIABLE", HttpStatus: http.StatusRequestedRangeNotSatisfiable, Description: "文件范围读取错误"}
|
||||
CODE_WRAPPER_UNKNOWN = &CodeWrapper{Code: "UNKNOWN", HttpStatus: http.StatusInternalServerError, Description: "服务器未知错误"}
|
||||
)
|
||||
|
||||
@ -57,6 +58,8 @@ func FetchHttpStatus(code string) int {
|
||||
return CODE_WRAPPER_UNAUTHORIZED.HttpStatus
|
||||
} else if code == CODE_WRAPPER_NOT_FOUND.Code {
|
||||
return CODE_WRAPPER_NOT_FOUND.HttpStatus
|
||||
} else if code == CODE_WRAPPER_RANGE_NOT_SATISFIABLE.Code {
|
||||
return CODE_WRAPPER_RANGE_NOT_SATISFIABLE.HttpStatus
|
||||
} else {
|
||||
return CODE_WRAPPER_UNKNOWN.HttpStatus
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user