Move passwordType to org.

This commit is contained in:
Yang Luo 2021-05-05 23:32:21 +08:00
parent fffada894c
commit f442f11568
10 changed files with 42 additions and 47 deletions

View File

@ -90,7 +90,6 @@ func (c *ApiController) Signup() {
Id: util.GenerateId(),
Type: "normal-user",
Password: form.Password,
PasswordType: "plain",
DisplayName: form.Name,
Avatar: "https://casbin.org/img/casbin.svg",
Email: form.Email,

View File

@ -56,20 +56,22 @@ func CheckUserSignup(organization string, username string, password string, disp
}
func checkPassword(user *User, password string) string {
if user.PasswordType == "plain" {
organization := getOrganization("admin", user.Owner)
if organization.PasswordType == "plain" {
if password == user.Password {
return ""
} else {
return "password incorrect"
}
} else if user.PasswordType == "salt" {
} else if organization.PasswordType == "salt" {
if getSaltedPassword(password) == user.Password {
return ""
} else {
return "password incorrect"
}
} else {
return fmt.Sprintf("unsupported password type: %s", user.PasswordType)
return fmt.Sprintf("unsupported password type: %s", organization.PasswordType)
}
}
@ -79,15 +81,15 @@ func CheckUserLogin(organization string, username string, password string) (*Use
return nil, "the user does not exist, please sign up first"
}
if user.IsForbidden {
return nil, "the user is forbidden to sign in, please contact the administrator"
}
msg := checkPassword(user, password)
if msg != "" {
return nil, msg
}
if user.IsForbidden {
return nil, "the user is forbidden to sign in, please contact the administrator"
}
return user, ""
}

View File

@ -15,11 +15,12 @@ func initBuiltInOrganization() {
}
organization = &Organization{
Owner: "admin",
Name: "built-in",
CreatedTime: util.GetCurrentTime(),
DisplayName: "Built-in Organization",
WebsiteUrl: "https://example.com",
Owner: "admin",
Name: "built-in",
CreatedTime: util.GetCurrentTime(),
DisplayName: "Built-in Organization",
WebsiteUrl: "https://example.com",
PasswordType: "plain",
}
AddOrganization(organization)
}
@ -36,7 +37,6 @@ func initBuiltInUser() {
CreatedTime: util.GetCurrentTime(),
Id: util.GenerateId(),
Password: "123",
PasswordType: "plain",
DisplayName: "Admin",
Avatar: "https://casbin.org/img/casbin.svg",
Email: "admin@example.com",

View File

@ -24,9 +24,10 @@ type Organization struct {
Name string `xorm:"varchar(100) notnull pk" json:"name"`
CreatedTime string `xorm:"varchar(100)" json:"createdTime"`
DisplayName string `xorm:"varchar(100)" json:"displayName"`
WebsiteUrl string `xorm:"varchar(100)" json:"websiteUrl"`
Favicon string `xorm:"varchar(100)" json:"favicon"`
DisplayName string `xorm:"varchar(100)" json:"displayName"`
WebsiteUrl string `xorm:"varchar(100)" json:"websiteUrl"`
Favicon string `xorm:"varchar(100)" json:"favicon"`
PasswordType string `xorm:"varchar(100)" json:"passwordType"`
}
func GetOrganizations(owner string) []*Organization {

View File

@ -30,7 +30,6 @@ type User struct {
Id string `xorm:"varchar(100)" json:"id"`
Type string `xorm:"varchar(100)" json:"type"`
Password string `xorm:"varchar(100)" json:"password"`
PasswordType string `xorm:"varchar(100)" json:"passwordType"`
DisplayName string `xorm:"varchar(100)" json:"displayName"`
Avatar string `xorm:"varchar(255)" json:"avatar"`
Email string `xorm:"varchar(100)" json:"email"`

View File

@ -30,7 +30,6 @@ func createUserFromOriginalUser(originalUser *User) *object.User {
Id: strconv.Itoa(originalUser.Id),
Type: "normal-user",
Password: originalUser.Password,
PasswordType: "salt",
DisplayName: originalUser.Name,
Avatar: fmt.Sprintf("%s%s", avatarBaseUrl, originalUser.Avatar),
Email: "",

View File

@ -13,12 +13,14 @@
// limitations under the License.
import React from "react";
import {Button, Card, Col, Input, Row} from 'antd';
import {Button, Card, Col, Input, Row, Select} from 'antd';
import * as OrganizationBackend from "./backend/OrganizationBackend";
import * as Setting from "./Setting";
import i18next from "i18next";
import {LinkOutlined} from "@ant-design/icons";
const { Option } = Select;
class OrganizationEditPage extends React.Component {
constructor(props) {
super(props);
@ -124,6 +126,19 @@ class OrganizationEditPage extends React.Component {
}} />
</Col>
</Row>
<Row style={{marginTop: '20px'}} >
<Col style={{marginTop: '5px'}} span={2}>
{i18next.t("general:Password type")}:
</Col>
<Col span={22} >
<Select virtual={false} style={{width: '100%'}} value={this.state.organization.passwordType} onChange={(value => {this.updateOrganizationField('passwordType', value);})}>
{
['plain', 'salt']
.map((item, index) => <Option key={index} value={item}>{item}</Option>)
}
</Select>
</Col>
</Row>
</Card>
)
}

View File

@ -142,6 +142,13 @@ class OrganizationListPage extends React.Component {
)
}
},
{
title: i18next.t("general:Password type"),
dataIndex: 'passwordType',
key: 'passwordType',
width: '150px',
sorter: (a, b) => a.passwordType.localeCompare(b.passwordType),
},
{
title: i18next.t("general:Action"),
dataIndex: '',

View File

@ -261,19 +261,6 @@ class UserEditPage extends React.Component {
</Select>
</Col>
</Row>
<Row style={{marginTop: '20px'}} >
<Col style={{marginTop: '5px'}} span={2}>
{i18next.t("general:Password type")}:
</Col>
<Col span={22} >
<Select virtual={false} style={{width: '100%'}} value={this.state.user.passwordType} onChange={(value => {this.updateUserField('passwordType', value);})}>
{
['plain']
.map((item, index) => <Option key={index} value={item}>{item}</Option>)
}
</Select>
</Col>
</Row>
<Row style={{marginTop: '20px'}} >
<Col style={{marginTop: '5px'}} span={2}>
{i18next.t("general:Password")}:

View File

@ -130,20 +130,6 @@ class UserListPage extends React.Component {
return Setting.getFormattedDate(text);
}
},
// {
// title: 'Password type',
// dataIndex: 'passwordType',
// key: 'passwordType',
// width: '150px',
// sorter: (a, b) => a.passwordType.localeCompare(b.passwordType),
// },
// {
// title: 'Password',
// dataIndex: 'password',
// key: 'password',
// width: '150px',
// sorter: (a, b) => a.password.localeCompare(b.password),
// },
{
title: i18next.t("general:Display name"),
dataIndex: 'displayName',