58 lines
1.2 KiB
Go
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
|
|
}
|