mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 15:00:27 +08:00
重写规则API支持用户操作
This commit is contained in:
@@ -124,8 +124,9 @@ func (this *HTTPRewriteRuleDAO) ComposeRewriteRule(tx *dbs.Tx, rewriteRuleId int
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateRewriteRule 创建规则
|
// CreateRewriteRule 创建规则
|
||||||
func (this *HTTPRewriteRuleDAO) CreateRewriteRule(tx *dbs.Tx, pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, withQuery bool, isOn bool, condsJSON []byte) (int64, error) {
|
func (this *HTTPRewriteRuleDAO) CreateRewriteRule(tx *dbs.Tx, userId int64, pattern string, replace string, mode string, redirectStatus int, isBreak bool, proxyHost string, withQuery bool, isOn bool, condsJSON []byte) (int64, error) {
|
||||||
var op = NewHTTPRewriteRuleOperator()
|
var op = NewHTTPRewriteRuleOperator()
|
||||||
|
op.UserId = userId
|
||||||
op.State = HTTPRewriteRuleStateEnabled
|
op.State = HTTPRewriteRuleStateEnabled
|
||||||
op.IsOn = isOn
|
op.IsOn = isOn
|
||||||
|
|
||||||
@@ -172,6 +173,34 @@ func (this *HTTPRewriteRuleDAO) UpdateRewriteRule(tx *dbs.Tx, rewriteRuleId int6
|
|||||||
return this.NotifyUpdate(tx, rewriteRuleId)
|
return this.NotifyUpdate(tx, rewriteRuleId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *HTTPRewriteRuleDAO) CheckUserRewriteRule(tx *dbs.Tx, userId int64, rewriteRuleId int64) error {
|
||||||
|
if rewriteRuleId <= 0 {
|
||||||
|
return ErrNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
exists, err := this.Query(tx).
|
||||||
|
Pk(rewriteRuleId).
|
||||||
|
Attr("userId", userId).
|
||||||
|
Exist()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !exists {
|
||||||
|
return ErrNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithRewriteRuleId(tx, rewriteRuleId)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if webId <= 0 {
|
||||||
|
return ErrNotFound
|
||||||
|
}
|
||||||
|
|
||||||
|
return SharedHTTPWebDAO.CheckUserWeb(tx, userId, webId)
|
||||||
|
}
|
||||||
|
|
||||||
// NotifyUpdate 通知更新
|
// NotifyUpdate 通知更新
|
||||||
func (this *HTTPRewriteRuleDAO) NotifyUpdate(tx *dbs.Tx, rewriteRuleId int64) error {
|
func (this *HTTPRewriteRuleDAO) NotifyUpdate(tx *dbs.Tx, rewriteRuleId int64) error {
|
||||||
webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithRewriteRuleId(tx, rewriteRuleId)
|
webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithRewriteRuleId(tx, rewriteRuleId)
|
||||||
|
|||||||
@@ -2,6 +2,42 @@ package models
|
|||||||
|
|
||||||
import "github.com/iwind/TeaGo/dbs"
|
import "github.com/iwind/TeaGo/dbs"
|
||||||
|
|
||||||
|
const (
|
||||||
|
UserField_Id dbs.FieldName = "id" // ID
|
||||||
|
UserField_IsOn dbs.FieldName = "isOn" // 是否启用
|
||||||
|
UserField_Username dbs.FieldName = "username" // 用户名
|
||||||
|
UserField_Password dbs.FieldName = "password" // 密码
|
||||||
|
UserField_Fullname dbs.FieldName = "fullname" // 真实姓名
|
||||||
|
UserField_Mobile dbs.FieldName = "mobile" // 手机号
|
||||||
|
UserField_VerifiedMobile dbs.FieldName = "verifiedMobile" // 已验证手机号
|
||||||
|
UserField_Tel dbs.FieldName = "tel" // 联系电话
|
||||||
|
UserField_Remark dbs.FieldName = "remark" // 备注
|
||||||
|
UserField_Email dbs.FieldName = "email" // 邮箱地址
|
||||||
|
UserField_VerifiedEmail dbs.FieldName = "verifiedEmail" // 激活后的邮箱
|
||||||
|
UserField_EmailIsVerified dbs.FieldName = "emailIsVerified" // 邮箱是否已验证
|
||||||
|
UserField_AvatarFileId dbs.FieldName = "avatarFileId" // 头像文件ID
|
||||||
|
UserField_CreatedAt dbs.FieldName = "createdAt" // 创建时间
|
||||||
|
UserField_Day dbs.FieldName = "day" // YYYYMMDD
|
||||||
|
UserField_UpdatedAt dbs.FieldName = "updatedAt" // 修改时间
|
||||||
|
UserField_State dbs.FieldName = "state" // 状态
|
||||||
|
UserField_Source dbs.FieldName = "source" // 来源
|
||||||
|
UserField_ClusterId dbs.FieldName = "clusterId" // 集群ID
|
||||||
|
UserField_Features dbs.FieldName = "features" // 允许操作的特征
|
||||||
|
UserField_RegisteredIP dbs.FieldName = "registeredIP" // 注册使用的IP
|
||||||
|
UserField_IsRejected dbs.FieldName = "isRejected" // 是否已拒绝
|
||||||
|
UserField_RejectReason dbs.FieldName = "rejectReason" // 拒绝理由
|
||||||
|
UserField_IsVerified dbs.FieldName = "isVerified" // 是否验证通过
|
||||||
|
UserField_RequirePlans dbs.FieldName = "requirePlans" // 是否需要购买套餐
|
||||||
|
UserField_Modules dbs.FieldName = "modules" // 用户模块
|
||||||
|
UserField_PriceType dbs.FieldName = "priceType" // 计费类型:traffic|bandwidth
|
||||||
|
UserField_PricePeriod dbs.FieldName = "pricePeriod" // 结算周期
|
||||||
|
UserField_ServersEnabled dbs.FieldName = "serversEnabled" // 是否禁用所有服务
|
||||||
|
UserField_Notification dbs.FieldName = "notification" // 通知设置
|
||||||
|
UserField_BandwidthAlgo dbs.FieldName = "bandwidthAlgo" // 带宽算法
|
||||||
|
UserField_BandwidthModifier dbs.FieldName = "bandwidthModifier" // 带宽修正值
|
||||||
|
UserField_Lang dbs.FieldName = "lang" // 语言代号
|
||||||
|
)
|
||||||
|
|
||||||
// User 用户
|
// User 用户
|
||||||
type User struct {
|
type User struct {
|
||||||
Id uint32 `field:"id"` // ID
|
Id uint32 `field:"id"` // ID
|
||||||
@@ -36,6 +72,7 @@ type User struct {
|
|||||||
Notification dbs.JSON `field:"notification"` // 通知设置
|
Notification dbs.JSON `field:"notification"` // 通知设置
|
||||||
BandwidthAlgo string `field:"bandwidthAlgo"` // 带宽算法
|
BandwidthAlgo string `field:"bandwidthAlgo"` // 带宽算法
|
||||||
BandwidthModifier float64 `field:"bandwidthModifier"` // 带宽修正值
|
BandwidthModifier float64 `field:"bandwidthModifier"` // 带宽修正值
|
||||||
|
Lang string `field:"lang"` // 语言代号
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserOperator struct {
|
type UserOperator struct {
|
||||||
@@ -71,6 +108,7 @@ type UserOperator struct {
|
|||||||
Notification any // 通知设置
|
Notification any // 通知设置
|
||||||
BandwidthAlgo any // 带宽算法
|
BandwidthAlgo any // 带宽算法
|
||||||
BandwidthModifier any // 带宽修正值
|
BandwidthModifier any // 带宽修正值
|
||||||
|
Lang any // 语言代号
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewUserOperator() *UserOperator {
|
func NewUserOperator() *UserOperator {
|
||||||
|
|||||||
@@ -15,14 +15,14 @@ type HTTPRewriteRuleService struct {
|
|||||||
// CreateHTTPRewriteRule 创建重写规则
|
// CreateHTTPRewriteRule 创建重写规则
|
||||||
func (this *HTTPRewriteRuleService) CreateHTTPRewriteRule(ctx context.Context, req *pb.CreateHTTPRewriteRuleRequest) (*pb.CreateHTTPRewriteRuleResponse, error) {
|
func (this *HTTPRewriteRuleService) CreateHTTPRewriteRule(ctx context.Context, req *pb.CreateHTTPRewriteRuleRequest) (*pb.CreateHTTPRewriteRuleResponse, error) {
|
||||||
// 校验请求
|
// 校验请求
|
||||||
_, err := this.ValidateAdmin(ctx)
|
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var tx = this.NullTx()
|
var tx = this.NullTx()
|
||||||
|
|
||||||
rewriteRuleId, err := models.SharedHTTPRewriteRuleDAO.CreateRewriteRule(tx, req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.WithQuery, req.IsOn, req.CondsJSON)
|
rewriteRuleId, err := models.SharedHTTPRewriteRuleDAO.CreateRewriteRule(tx, userId, req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.WithQuery, req.IsOn, req.CondsJSON)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -33,12 +33,18 @@ func (this *HTTPRewriteRuleService) CreateHTTPRewriteRule(ctx context.Context, r
|
|||||||
// UpdateHTTPRewriteRule 修改重写规则
|
// UpdateHTTPRewriteRule 修改重写规则
|
||||||
func (this *HTTPRewriteRuleService) UpdateHTTPRewriteRule(ctx context.Context, req *pb.UpdateHTTPRewriteRuleRequest) (*pb.RPCSuccess, error) {
|
func (this *HTTPRewriteRuleService) UpdateHTTPRewriteRule(ctx context.Context, req *pb.UpdateHTTPRewriteRuleRequest) (*pb.RPCSuccess, error) {
|
||||||
// 校验请求
|
// 校验请求
|
||||||
_, err := this.ValidateAdmin(ctx)
|
_, userId, err := this.ValidateAdminAndUser(ctx, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var tx = this.NullTx()
|
var tx = this.NullTx()
|
||||||
|
if userId > 0 {
|
||||||
|
err = models.SharedHTTPRewriteRuleDAO.CheckUserRewriteRule(tx, userId, req.RewriteRuleId)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
err = models.SharedHTTPRewriteRuleDAO.UpdateRewriteRule(tx, req.RewriteRuleId, req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.WithQuery, req.IsOn, req.CondsJSON)
|
err = models.SharedHTTPRewriteRuleDAO.UpdateRewriteRule(tx, req.RewriteRuleId, req.Pattern, req.Replace, req.Mode, types.Int(req.RedirectStatus), req.IsBreak, req.ProxyHost, req.WithQuery, req.IsOn, req.CondsJSON)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -261,6 +261,7 @@ func (this *UserService) FindEnabledUser(ctx context.Context, req *pb.FindEnable
|
|||||||
IsEnterpriseIdentified: isEnterpriseIdentified,
|
IsEnterpriseIdentified: isEnterpriseIdentified,
|
||||||
BandwidthAlgo: user.BandwidthAlgo,
|
BandwidthAlgo: user.BandwidthAlgo,
|
||||||
OtpLogin: pbOtpAuth,
|
OtpLogin: pbOtpAuth,
|
||||||
|
Lang: user.Lang,
|
||||||
}}, nil
|
}}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user