diff --git a/controllers/account.go b/controllers/account.go index bac576e5..a5d1efbf 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -37,7 +37,9 @@ type RequestForm struct { Password string `json:"password"` Name string `json:"name"` Email string `json:"email"` + PhonePrefix string `json:"phonePrefix"` Phone string `json:"phone"` + Affiliation string `json:"affiliation"` Application string `json:"application"` Provider string `json:"provider"` @@ -75,26 +77,34 @@ func (c *ApiController) Signup() { panic(err) } - msg := object.CheckUserSignup(form.Username, form.Password) + userId := fmt.Sprintf("%s/%s", form.Organization, form.Username) + msg := object.CheckUserSignup(userId, form.Password) if msg != "" { resp = Response{Status: "error", Msg: msg, Data: ""} } else { user := &object.User{ - Owner: form.Organization, - Name: form.Username, - CreatedTime: util.GetCurrentTime(), - Password: form.Password, - PasswordType: "plain", - DisplayName: form.Name, - Email: form.Email, - Phone: form.Phone, + Owner: form.Organization, + Name: form.Username, + CreatedTime: util.GetCurrentTime(), + Id: util.GenerateId(), + Type: "normal-user", + Password: form.Password, + PasswordType: "plain", + DisplayName: form.Name, + Avatar: "https://casbin.org/img/casbin.svg", + Email: form.Email, + PhonePrefix: form.PhonePrefix, + Phone: form.Phone, + Affiliation: form.Affiliation, + IsAdmin: false, + IsGlobalAdmin: false, } object.AddUser(user) //c.SetSessionUser(user) - util.LogInfo(c.Ctx, "API: [%s] is signed up as new user", user) - resp = Response{Status: "ok", Msg: "", Data: user} + util.LogInfo(c.Ctx, "API: [%s] is signed up as new user", userId) + resp = Response{Status: "ok", Msg: "", Data: userId} } c.Data["json"] = resp diff --git a/web/src/auth/LoginPage.js b/web/src/auth/LoginPage.js index d1006ef4..28f7e14f 100644 --- a/web/src/auth/LoginPage.js +++ b/web/src/auth/LoginPage.js @@ -24,6 +24,7 @@ import * as Setting from "../Setting"; import {GithubLoginButton, GoogleLoginButton} from "react-social-login-buttons"; import QqLoginButton from "./QqLoginButton"; import i18next from "i18next"; +import {authConfig} from "./Auth"; class LoginPage extends React.Component { constructor(props) { @@ -139,6 +140,14 @@ class LoginPage extends React.Component { } } + getSignupPath(application) { + if (authConfig.appName === application.name) { + return "/signup"; + } else { + return `/signup/${application.name}`; + } + } + renderForm(application) { if (this.state.msg !== null) { return Util.renderMessage(this.state.msg) @@ -156,15 +165,16 @@ class LoginPage extends React.Component { style={{width: "250px"}} size="large" > -