mirror of
https://github.com/casdoor/casdoor.git
synced 2025-07-02 11:20:18 +08:00
Add Properties to user.
This commit is contained in:
@ -198,15 +198,27 @@ func (c *ApiController) Login() {
|
||||
user := object.GetUser(userId)
|
||||
|
||||
// sync info from 3rd-party if possible
|
||||
if user.DisplayName == "" && userInfo.Username != "" {
|
||||
if userInfo.Username != "" {
|
||||
propertyName := fmt.Sprintf("oauth_%s_username", provider.Type)
|
||||
object.SetUserProperty(user, propertyName, userInfo.Username)
|
||||
if user.DisplayName == "" {
|
||||
object.SetUserField(user, "display_name", userInfo.Username)
|
||||
}
|
||||
if user.Avatar == "" && userInfo.AvatarUrl != "" {
|
||||
}
|
||||
if userInfo.AvatarUrl != "" {
|
||||
propertyName := fmt.Sprintf("oauth_%s_avatarUrl", provider.Type)
|
||||
object.SetUserProperty(user, propertyName, userInfo.AvatarUrl)
|
||||
if user.Avatar == "" {
|
||||
object.SetUserField(user, "avatar", userInfo.AvatarUrl)
|
||||
}
|
||||
if user.Email == "" && userInfo.Email != "" {
|
||||
}
|
||||
if userInfo.Email != "" {
|
||||
propertyName := fmt.Sprintf("oauth_%s_email", provider.Type)
|
||||
object.SetUserProperty(user, propertyName, userInfo.Email)
|
||||
if user.Email == "" {
|
||||
object.SetUserField(user, "email", userInfo.Email)
|
||||
}
|
||||
}
|
||||
|
||||
isLinked := object.LinkUserAccount(user, provider.Type, userInfo.Username)
|
||||
if isLinked {
|
||||
|
@ -35,6 +35,7 @@ type User struct {
|
||||
Phone string `xorm:"varchar(100)" json:"phone"`
|
||||
Affiliation string `xorm:"varchar(100)" json:"affiliation"`
|
||||
Tag string `xorm:"varchar(100)" json:"tag"`
|
||||
Ranking int `json:"ranking"`
|
||||
IsAdmin bool `json:"isAdmin"`
|
||||
IsGlobalAdmin bool `json:"isGlobalAdmin"`
|
||||
IsForbidden bool `json:"isForbidden"`
|
||||
@ -45,6 +46,8 @@ type User struct {
|
||||
Google string `xorm:"varchar(100)" json:"google"`
|
||||
QQ string `xorm:"qq varchar(100)" json:"qq"`
|
||||
WeChat string `xorm:"wechat varchar(100)" json:"wechat"`
|
||||
|
||||
Properties map[string]string `json:"properties"`
|
||||
}
|
||||
|
||||
func GetGlobalUsers() []*User {
|
||||
|
@ -92,6 +92,21 @@ func GetUserField(user *User, field string) string {
|
||||
return f.String()
|
||||
}
|
||||
|
||||
func SetUserProperty(user *User, field string, value string) bool {
|
||||
if value == "" {
|
||||
delete(user.Properties, field)
|
||||
} else {
|
||||
user.Properties[field] = value
|
||||
}
|
||||
|
||||
affected, err := adapter.Engine.ID(core.PK{user.Owner, user.Name}).Cols("properties").Update(user)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return affected != 0
|
||||
}
|
||||
|
||||
func calculateHash(user *User) string {
|
||||
s := strings.Join([]string{user.Id, user.Password, user.DisplayName, user.Avatar, user.Phone}, "|")
|
||||
return util.GetMd5Hash(s)
|
||||
|
@ -44,7 +44,7 @@ class UserListPage extends React.Component {
|
||||
|
||||
newUser() {
|
||||
return {
|
||||
owner: "admin", // this.props.account.username,
|
||||
owner: "built-in", // this.props.account.username,
|
||||
name: `user_${this.state.users.length}`,
|
||||
createdTime: moment().format(),
|
||||
type: "normal-user",
|
||||
@ -58,6 +58,7 @@ class UserListPage extends React.Component {
|
||||
isAdmin: false,
|
||||
isGlobalAdmin: false,
|
||||
IsForbidden: false,
|
||||
properties: {},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -68,18 +68,22 @@ class AuthCallback extends React.Component {
|
||||
|
||||
UNSAFE_componentWillMount() {
|
||||
const params = new URLSearchParams(this.props.location.search);
|
||||
const code = params.get("code");
|
||||
|
||||
const innerParams = this.getInnerParams();
|
||||
const applicationName = innerParams.get("application");
|
||||
const providerName = innerParams.get("provider");
|
||||
const method = innerParams.get("method");
|
||||
|
||||
let redirectUri = `${window.location.origin}/callback`;
|
||||
|
||||
const body = {
|
||||
type: this.getResponseType(),
|
||||
application: applicationName,
|
||||
provider: providerName,
|
||||
code: params.get("code"),
|
||||
code: code,
|
||||
// state: innerParams.get("state"),
|
||||
state: innerParams.get("application"),
|
||||
state: applicationName,
|
||||
redirectUri: redirectUri,
|
||||
method: method,
|
||||
};
|
||||
|
Reference in New Issue
Block a user