feat: 接入消息加密与实名认证能力
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
//go:build mysql
|
||||
// +build mysql
|
||||
|
||||
package mysql
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
|
||||
t "github.com/tinode/chat/server/store/types"
|
||||
)
|
||||
|
||||
func (a *adapter) RealNamePolicy(tenantID t.TenantID) (*t.RealNamePolicy, error) {
|
||||
if !tenantID.IsValid() {
|
||||
return nil, t.ErrMalformed
|
||||
}
|
||||
db := a.registryDB
|
||||
if db == nil {
|
||||
db = a.db
|
||||
}
|
||||
if db == nil {
|
||||
return nil, t.ErrInternal
|
||||
}
|
||||
ctx, cancel := a.getContext()
|
||||
if cancel != nil {
|
||||
defer cancel()
|
||||
}
|
||||
var policy t.RealNamePolicy
|
||||
err := db.GetContext(ctx, &policy, `SELECT tenant_id, realname_review_policy, realname_provider_mode,
|
||||
realname_required, realname_allow_skip, realname_remind_after
|
||||
FROM im_tenant_config WHERE tenant_id=? LIMIT 1`, tenantID)
|
||||
if errors.Is(err, sql.ErrNoRows) {
|
||||
policy = *defaultRealNamePolicy(tenantID)
|
||||
return &policy, nil
|
||||
}
|
||||
if isUnknownColumn(err) {
|
||||
policy = *defaultRealNamePolicy(tenantID)
|
||||
return &policy, nil
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
policy.Normalize()
|
||||
return &policy, nil
|
||||
}
|
||||
|
||||
func defaultRealNamePolicy(tenantID t.TenantID) *t.RealNamePolicy {
|
||||
policy := &t.RealNamePolicy{
|
||||
TenantID: tenantID,
|
||||
ReviewPolicy: t.RealNameReviewPolicyNone,
|
||||
ProviderMode: "id_card_2factor",
|
||||
AllowSkip: true,
|
||||
RemindAfter: "24h",
|
||||
}
|
||||
policy.Normalize()
|
||||
return policy
|
||||
}
|
||||
Reference in New Issue
Block a user