-
Notifications
You must be signed in to change notification settings - Fork 0
/
user-manager-op-admin-unlock.go
61 lines (51 loc) · 1.93 KB
/
user-manager-op-admin-unlock.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Copyright (c) 2023 The Go-Enjin Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package user_manager
import (
"net/http"
"github.com/go-corelibs/x-text/message"
"github.com/go-enjin/be/pkg/context"
"github.com/go-enjin/be/pkg/editor"
"github.com/go-enjin/be/pkg/errors"
"github.com/go-enjin/be/pkg/log"
"github.com/go-enjin/be/pkg/userbase"
)
func (f *CFeature) opAdminUnlockUser(form context.Context, r *http.Request) {
eid := userbase.GetCurrentEID(r)
printer := message.GetPrinter(r)
if !userbase.CurrentUserCan(r, f.Action("update", "user")) {
log.WarnRF(r, "user %q attempted to admin-unlock a new user without permission!", eid)
f.Site().PushErrorNotice(eid, true, errors.PermissionDeniedError(printer))
return
}
var userEID, confirmed string
if userEID = form.String("target", ""); userEID == "" {
return
} else if confirmed = form.String(editor.AdminUnlockUserActionKey+"-confirmed", "false"); confirmed != "true" {
return
}
su := f.Site().SiteUsers()
su.LockUser(r, userEID)
defer su.UnlockUser(r, userEID)
if !su.UserPresent(userEID) {
log.WarnRF(r, "user %q attempting to admin-unlock a user that does not exist!", eid)
return
}
if err := su.SetUserAdminLocked(r, userEID, false); err != nil {
f.Site().PushErrorNotice(eid, true, errors.UnexpectedError(printer))
return
}
f.Site().PushInfoNotice(eid, true, printer.Sprintf(`The user has been unblocked from accessing the site.`))
return
}