Files
im_server/server/db/mysql/realname_policy_config.go
T

58 lines
1.2 KiB
Go

//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
}