casnode/object/member.go

208 lines
5.1 KiB
Go
Raw Normal View History

2020-06-06 16:18:54 +08:00
// Copyright 2020 The casbin Authors. All Rights Reserved.
//
// 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 object
import (
"fmt"
"strconv"
"strings"
"github.com/casbin/casnode/casdoor"
"github.com/casbin/casnode/util"
2022-09-29 00:37:37 +08:00
"github.com/casdoor/casdoor-go-sdk/casdoorsdk"
)
2022-09-29 00:37:37 +08:00
func GetRankingRich() ([]*casdoorsdk.User, error) {
2021-08-28 11:26:44 +08:00
return casdoor.GetSortedUsers("score", 25), nil
}
2022-09-29 00:37:37 +08:00
func GetRankingPlayer() ([]*casdoorsdk.User, error) {
2022-08-09 20:10:21 +08:00
return casdoor.GetSortedUsers("karma", 25), nil
}
2022-09-29 00:37:37 +08:00
func GetUser(id string) *casdoorsdk.User {
user := casdoor.GetUser(id)
2021-08-21 16:06:49 +08:00
return user
2020-07-07 00:33:29 +08:00
}
2022-09-29 00:37:37 +08:00
func GetUsers() []*casdoorsdk.User {
users := casdoor.GetUsers()
2021-08-21 16:06:49 +08:00
return users
2020-06-06 16:18:54 +08:00
}
2021-08-21 16:06:49 +08:00
func GetMemberNum() int {
2021-08-28 11:26:44 +08:00
return casdoor.GetUserCount()
}
2022-09-29 00:37:37 +08:00
func UpdateMemberEditorType(user *casdoorsdk.User, editorType string) (bool, error) {
2021-08-22 10:35:04 +08:00
if user == nil {
return false, fmt.Errorf("user is nil")
}
SetUserField(user, "editorType", editorType)
2022-09-29 00:37:37 +08:00
return casdoorsdk.UpdateUserForColumns(user, []string{"properties"})
}
2022-09-29 00:37:37 +08:00
func GetMemberEditorType(user *casdoorsdk.User) string {
2021-08-21 16:06:49 +08:00
return GetUserField(user, "editorType")
}
2022-09-29 00:37:37 +08:00
func UpdateMemberLanguage(user *casdoorsdk.User, language string) (bool, error) {
SetUserField(user, "language", language)
2022-09-29 00:37:37 +08:00
return casdoorsdk.UpdateUserForColumns(user, []string{"properties"})
}
2022-09-29 00:37:37 +08:00
func GetMemberLanguage(user *casdoorsdk.User) string {
return GetUserField(user, "language")
2020-06-06 16:18:54 +08:00
}
2020-06-28 20:24:22 +08:00
// GetMemberEmailReminder return member's email reminder status, and his email address.
func GetMemberEmailReminder(id string) (bool, string) {
user := GetUser(id)
if user == nil {
return false, ""
}
return true, user.Email
}
2020-06-28 20:24:22 +08:00
2022-09-29 00:37:37 +08:00
func GetUserByEmail(email string) *casdoorsdk.User {
2021-08-28 11:26:44 +08:00
return casdoor.GetUserByEmail(email)
2020-06-28 20:24:22 +08:00
}
2020-07-05 18:21:18 +08:00
2022-09-29 00:37:37 +08:00
func GetMemberCheckinDate(user *casdoorsdk.User) string {
return GetUserField(user, "checkinDate")
}
2022-09-29 00:37:37 +08:00
func UpdateMemberCheckinDate(user *casdoorsdk.User, checkinDate string) (bool, error) {
SetUserField(user, "checkinDate", checkinDate)
2022-09-29 00:37:37 +08:00
return casdoorsdk.UpdateUserForColumns(user, []string{"properties"})
}
2022-09-29 00:37:37 +08:00
func GetUserName(user *casdoorsdk.User) string {
if user == nil {
2021-08-22 10:35:04 +08:00
return ""
}
2021-08-25 00:28:08 +08:00
return user.Name
}
2022-09-29 00:37:37 +08:00
func CheckIsAdmin(user *casdoorsdk.User) bool {
if user == nil {
2021-08-22 10:35:04 +08:00
return false
}
2021-08-22 10:35:04 +08:00
return user.IsAdmin
}
2022-09-29 00:37:37 +08:00
func GetMemberFileQuota(user *casdoorsdk.User) int {
if user == nil {
return 0
}
2021-08-22 10:35:04 +08:00
return GetUserFieldInt(user, "fileQuota")
}
// UpdateMemberOnlineStatus updates member's online information.
2022-09-29 00:37:37 +08:00
func UpdateMemberOnlineStatus(user *casdoorsdk.User, isOnline bool, lastActionDate string) (bool, error) {
2021-08-25 00:28:08 +08:00
if user == nil {
2021-08-22 10:35:04 +08:00
return false, fmt.Errorf("user is nil")
}
user.IsOnline = isOnline
SetUserField(user, "lastActionDate", lastActionDate)
2022-09-29 00:37:37 +08:00
return casdoorsdk.UpdateUserForColumns(user, []string{"isOnline", "properties"})
}
func GetOnlineUserCount() int {
2021-08-28 11:26:44 +08:00
return casdoor.GetOnlineUserCount()
}
type UpdateListItem struct {
Table string
Attribute string
}
2022-09-29 00:37:37 +08:00
func AddMemberByNameAndEmailIfNotExist(username, email string) (*casdoorsdk.User, error) {
username = strings.ReplaceAll(username, " ", "")
if username == "" {
return nil, fmt.Errorf("username is empty")
}
email = strings.ReplaceAll(email, " ", "")
if email == "" {
return nil, fmt.Errorf("email is empty")
}
2022-09-29 00:37:37 +08:00
user, err := casdoorsdk.GetUser(username)
if err != nil {
return nil, err
}
if user != nil {
return user, nil
}
username = strings.Split(email, "@")[0]
2022-09-29 00:37:37 +08:00
user, err = casdoorsdk.GetUser(username)
if err != nil {
return nil, err
}
if user != nil {
return user, nil
}
2021-08-28 11:26:44 +08:00
newUser := GetUserByEmail(email)
if newUser == nil {
properties := map[string]string{}
properties["emailVerifiedTime"] = util.GetCurrentTime()
properties["fileQuota"] = strconv.Itoa(DefaultUploadFileQuota)
properties["renameQuota"] = strconv.Itoa(DefaultRenameQuota)
2022-09-29 00:37:37 +08:00
newUser = &casdoorsdk.User{
Name: username,
CreatedTime: util.GetCurrentTime(),
UpdatedTime: util.GetCurrentTime(),
Id: "",
Type: "",
Password: "",
DisplayName: "",
2021-08-30 01:12:03 +08:00
Avatar: "",
Email: email,
Phone: "",
Location: "",
Address: nil,
Affiliation: "",
Title: "",
Homepage: "",
Tag: "",
2021-08-28 14:06:13 +08:00
Score: getInitScore(),
Ranking: GetMemberNum() + 1,
IsOnline: false,
IsAdmin: false,
IsGlobalAdmin: false,
IsForbidden: false,
SignupApplication: CasdoorApplication,
Properties: properties,
}
2022-09-29 00:37:37 +08:00
_, err = casdoorsdk.AddUser(newUser)
if err != nil {
return newUser, err
}
}
return newUser, nil
}