This commit is contained in:
		| @@ -1,20 +0,0 @@ | ||||
| package controller | ||||
|  | ||||
| import ( | ||||
| 	"drive-linked/pkg/service" | ||||
| 	"github.com/kataras/iris/v12" | ||||
| ) | ||||
|  | ||||
| func UserProfile(ctx iris.Context) { | ||||
| 	serv := service.NewUsersService(ctx) | ||||
|  | ||||
| 	// 获取所有查询条件参数 | ||||
| 	var conditions map[string]interface{} | ||||
| 	for _, field := range service.UserConditions { | ||||
| 		if ctx.Params().GetString(field) != "" { | ||||
| 			conditions[field] = ctx.Params().GetString(field) | ||||
| 		} | ||||
| 	} | ||||
| 	serv.GetOneUser(&conditions) | ||||
| 	ctx.Next() | ||||
| } | ||||
| @@ -2,11 +2,14 @@ package service | ||||
|  | ||||
| import ( | ||||
| 	"database/sql" | ||||
| 	"drive-linked/model" | ||||
| 	"drive-linked/pkg/common" | ||||
| 	"drive-linked/pkg/dto" | ||||
| 	"drive-linked/pkg/model" | ||||
| 	"drive-linked/pkg/serializer" | ||||
| 	"drive-linked/pkg/utils" | ||||
| 	"github.com/kataras/iris/v12" | ||||
| 	"net/http" | ||||
| 	"regexp" | ||||
| ) | ||||
|  | ||||
| type UsersService struct { | ||||
| @@ -26,7 +29,7 @@ func (serv *UsersService) GetOneUser(conditions *map[string]interface{}) { | ||||
| 	resp := dto.NewResponse(serv.Ctx) | ||||
| 	user := &model.User{} | ||||
|  | ||||
| 	err = user.GetWithConditions(conditions) | ||||
| 	err = user.GetProfileWithConditions(conditions) | ||||
|  | ||||
| 	switch err { | ||||
| 	case nil: | ||||
| @@ -38,7 +41,46 @@ func (serv *UsersService) GetOneUser(conditions *map[string]interface{}) { | ||||
| 		} | ||||
| 		resp.Success(userResult) | ||||
| 	case sql.ErrNoRows: | ||||
| 		resp.Error(serializer.ErrNoUser, "找不到此用户") | ||||
| 		resp.Error(serializer.ErrNoUser, "用户不存在") | ||||
| 	default: | ||||
| 		resp.Error(http.StatusInternalServerError, "获取用户信息失败,数据库异常") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (serv *UsersService) Login(loginParams dto.LoginParams) { | ||||
| 	var err error | ||||
| 	resp := dto.NewResponse(serv.Ctx) | ||||
|  | ||||
| 	// 登录逻辑 | ||||
| 	// 判断账号类型 邮箱/用户名 | ||||
| 	var method string | ||||
| 	emailExp := regexp.MustCompile("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?") | ||||
| 	if emailExp.Match([]byte(loginParams.Account)) { | ||||
| 		method = model.LoginMethodEmail | ||||
| 	} else { | ||||
| 		method = model.LoginMethodName | ||||
| 	} | ||||
|  | ||||
| 	// 从数据库取出原密码 | ||||
| 	userLogin := model.Login{} | ||||
| 	err = userLogin.GetLoginInfo(loginParams.Account, method) | ||||
| 	switch err { | ||||
| 	case nil: | ||||
| 		// 检查密码 | ||||
| 		match, _ := utils.CheckPasswd(loginParams.Password, userLogin.Password) | ||||
| 		if match { | ||||
| 			// 登录成功,签发token | ||||
| 			sToken, _ := common.NewShortToken(userLogin.Name) | ||||
| 			rToken, _ := common.NewRefreshToken(userLogin.Name) | ||||
| 			resp.Success(serializer.LoginResponse{ | ||||
| 				Token:        sToken, | ||||
| 				RefreshToken: rToken, | ||||
| 			}) | ||||
| 		} else { | ||||
| 			resp.ErrBadAccPasswd() | ||||
| 		} | ||||
| 	case sql.ErrNoRows: | ||||
| 		resp.Error(serializer.ErrNoUser, "用户不存在") | ||||
| 	default: | ||||
| 		resp.Error(http.StatusInternalServerError, "获取用户信息失败,数据库异常") | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user