mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 23:20:26 +08:00
重写规则API支持用户操作
This commit is contained in:
@@ -124,8 +124,9 @@ func (this *HTTPRewriteRuleDAO) ComposeRewriteRule(tx *dbs.Tx, rewriteRuleId int
|
||||
}
|
||||
|
||||
// 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()
|
||||
op.UserId = userId
|
||||
op.State = HTTPRewriteRuleStateEnabled
|
||||
op.IsOn = isOn
|
||||
|
||||
@@ -172,6 +173,34 @@ func (this *HTTPRewriteRuleDAO) UpdateRewriteRule(tx *dbs.Tx, rewriteRuleId int6
|
||||
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 通知更新
|
||||
func (this *HTTPRewriteRuleDAO) NotifyUpdate(tx *dbs.Tx, rewriteRuleId int64) error {
|
||||
webId, err := SharedHTTPWebDAO.FindEnabledWebIdWithRewriteRuleId(tx, rewriteRuleId)
|
||||
|
||||
@@ -2,6 +2,42 @@ package models
|
||||
|
||||
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 用户
|
||||
type User struct {
|
||||
Id uint32 `field:"id"` // ID
|
||||
@@ -36,6 +72,7 @@ type User struct {
|
||||
Notification dbs.JSON `field:"notification"` // 通知设置
|
||||
BandwidthAlgo string `field:"bandwidthAlgo"` // 带宽算法
|
||||
BandwidthModifier float64 `field:"bandwidthModifier"` // 带宽修正值
|
||||
Lang string `field:"lang"` // 语言代号
|
||||
}
|
||||
|
||||
type UserOperator struct {
|
||||
@@ -71,6 +108,7 @@ type UserOperator struct {
|
||||
Notification any // 通知设置
|
||||
BandwidthAlgo any // 带宽算法
|
||||
BandwidthModifier any // 带宽修正值
|
||||
Lang any // 语言代号
|
||||
}
|
||||
|
||||
func NewUserOperator() *UserOperator {
|
||||
|
||||
@@ -15,14 +15,14 @@ type HTTPRewriteRuleService struct {
|
||||
// CreateHTTPRewriteRule 创建重写规则
|
||||
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 {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
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 {
|
||||
return nil, err
|
||||
}
|
||||
@@ -33,12 +33,18 @@ func (this *HTTPRewriteRuleService) CreateHTTPRewriteRule(ctx context.Context, r
|
||||
// UpdateHTTPRewriteRule 修改重写规则
|
||||
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 {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
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)
|
||||
if err != nil {
|
||||
|
||||
@@ -261,6 +261,7 @@ func (this *UserService) FindEnabledUser(ctx context.Context, req *pb.FindEnable
|
||||
IsEnterpriseIdentified: isEnterpriseIdentified,
|
||||
BandwidthAlgo: user.BandwidthAlgo,
|
||||
OtpLogin: pbOtpAuth,
|
||||
Lang: user.Lang,
|
||||
}}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user