mirror of
https://github.com/casdoor/casdoor.git
synced 2025-09-10 12:50:29 +08:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
bc94735a8d | ||
![]() |
89c6ef5aae | ||
![]() |
21da9f5ff2 |
@@ -370,6 +370,12 @@ func getClaimsCustom(claims Claims, tokenField []string) jwt.MapClaims {
|
|||||||
res[fieldName] = finalField.Interface()
|
res[fieldName] = finalField.Interface()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if field == "permissionNames" {
|
||||||
|
permissionNames := []string{}
|
||||||
|
for _, val := range claims.User.Permissions {
|
||||||
|
permissionNames = append(permissionNames, val.Name)
|
||||||
|
}
|
||||||
|
res[util.SnakeToCamel(util.CamelToSnakeCase(field))] = permissionNames
|
||||||
} else { // Use selected user field as claims.
|
} else { // Use selected user field as claims.
|
||||||
userField := userValue.FieldByName(field)
|
userField := userValue.FieldByName(field)
|
||||||
if userField.IsValid() {
|
if userField.IsValid() {
|
||||||
|
19
util/log.go
19
util/log.go
@@ -16,6 +16,7 @@ package util
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@@ -28,20 +29,12 @@ func getIpInfo(clientIp string) string {
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
ips := strings.Split(clientIp, ",")
|
first := strings.TrimSpace(strings.Split(clientIp, ",")[0])
|
||||||
res := strings.TrimSpace(ips[0])
|
if host, _, err := net.SplitHostPort(first); err == nil {
|
||||||
//res := ""
|
return strings.Trim(host, "[]")
|
||||||
//for i := range ips {
|
}
|
||||||
// ip := strings.TrimSpace(ips[i])
|
|
||||||
// ipstr := fmt.Sprintf("%s: %s", ip, "")
|
|
||||||
// if i != len(ips)-1 {
|
|
||||||
// res += ipstr + " -> "
|
|
||||||
// } else {
|
|
||||||
// res += ipstr
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
return res
|
return strings.Trim(first, "[]")
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetClientIpFromRequest(req *http.Request) string {
|
func GetClientIpFromRequest(req *http.Request) string {
|
||||||
|
@@ -463,7 +463,7 @@ class ApplicationEditPage extends React.Component {
|
|||||||
<Select virtual={false} disabled={this.state.application.tokenFormat !== "JWT-Custom"} mode="tags" showSearch style={{width: "100%"}} value={this.state.application.tokenFields} onChange={(value => {this.updateApplicationField("tokenFields", value);})}>
|
<Select virtual={false} disabled={this.state.application.tokenFormat !== "JWT-Custom"} mode="tags" showSearch style={{width: "100%"}} value={this.state.application.tokenFields} onChange={(value => {this.updateApplicationField("tokenFields", value);})}>
|
||||||
<Option key={"provider"} value={"provider"}>{"Provider"}</Option>)
|
<Option key={"provider"} value={"provider"}>{"Provider"}</Option>)
|
||||||
{
|
{
|
||||||
Setting.getUserCommonFields().map((item, index) => <Option key={index} value={item}>{item}</Option>)
|
[...Setting.getUserCommonFields(), "permissionNames"].map((item, index) => <Option key={index} value={item}>{item}</Option>)
|
||||||
}
|
}
|
||||||
</Select>
|
</Select>
|
||||||
</Col>
|
</Col>
|
||||||
|
@@ -47,6 +47,7 @@ class LoginPage extends React.Component {
|
|||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.captchaRef = React.createRef();
|
this.captchaRef = React.createRef();
|
||||||
|
const urlParams = new URLSearchParams(this.props.location?.search);
|
||||||
this.state = {
|
this.state = {
|
||||||
classes: props,
|
classes: props,
|
||||||
type: props.type,
|
type: props.type,
|
||||||
@@ -70,6 +71,7 @@ class LoginPage extends React.Component {
|
|||||||
loginLoading: false,
|
loginLoading: false,
|
||||||
userCode: props.userCode ?? (props.match?.params?.userCode ?? null),
|
userCode: props.userCode ?? (props.match?.params?.userCode ?? null),
|
||||||
userCodeStatus: "",
|
userCodeStatus: "",
|
||||||
|
prefilledUsername: urlParams.get("username") || urlParams.get("login_hint"),
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.state.type === "cas" && props.match?.params.casApplicationName !== undefined) {
|
if (this.state.type === "cas" && props.match?.params.casApplicationName !== undefined) {
|
||||||
@@ -1011,7 +1013,7 @@ class LoginPage extends React.Component {
|
|||||||
organization: application.organization,
|
organization: application.organization,
|
||||||
application: application.name,
|
application: application.name,
|
||||||
autoSignin: !application?.signinItems.map(signinItem => signinItem.name === "Forgot password?" && signinItem.rule === "Auto sign in - False")?.includes(true),
|
autoSignin: !application?.signinItems.map(signinItem => signinItem.name === "Forgot password?" && signinItem.rule === "Auto sign in - False")?.includes(true),
|
||||||
username: Conf.ShowGithubCorner ? "admin" : "",
|
username: this.state.prefilledUsername || (Conf.ShowGithubCorner ? "admin" : ""),
|
||||||
password: Conf.ShowGithubCorner ? "123" : "",
|
password: Conf.ShowGithubCorner ? "123" : "",
|
||||||
}}
|
}}
|
||||||
onFinish={(values) => {
|
onFinish={(values) => {
|
||||||
|
Reference in New Issue
Block a user