mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-12 09:23:09 -06:00
Remove OPTION method on "/register/available",
Add CheckAccountAvailability method Signed-off-by: MTRNord <mtrnord1@gmail.com>
This commit is contained in:
parent
aad3497f0e
commit
4240762331
|
|
@ -314,3 +314,13 @@ func (d *Database) GetThreePIDsForLocalpart(
|
||||||
) (threepids []authtypes.ThreePID, err error) {
|
) (threepids []authtypes.ThreePID, err error) {
|
||||||
return d.threepids.selectThreePIDsForLocalpart(ctx, localpart)
|
return d.threepids.selectThreePIDsForLocalpart(ctx, localpart)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CheckAccountAvailability checks if the username/localpart is already present in the database.
|
||||||
|
// If the DB returns sql.ErrNoRows the Localpart isn't taken.
|
||||||
|
func (d *Database) CheckAccountAvailability(ctx context.Context, localpart string) (bool, error) {
|
||||||
|
_, err := d.accounts.selectAccountByLocalpart(ctx, localpart)
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,14 @@ func RegisterAvailable(
|
||||||
return *resErr
|
return *resErr
|
||||||
}
|
}
|
||||||
|
|
||||||
if _, resErr := accountDB.GetProfileByLocalpart(req.Context(), username); resErr == nil {
|
availability, availabilityErr := accountDB.CheckAccountAvailability(req.Context(), username)
|
||||||
|
if availabilityErr != nil {
|
||||||
|
return util.JSONResponse{
|
||||||
|
Code: 500,
|
||||||
|
JSON: jsonerror.Unknown("failed to check availability: " + availabilityErr.Error()),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !availability {
|
||||||
return util.JSONResponse{
|
return util.JSONResponse{
|
||||||
Code: 400,
|
Code: 400,
|
||||||
JSON: jsonerror.InvalidUsername("A different user ID has already been registered for this session"),
|
JSON: jsonerror.InvalidUsername("A different user ID has already been registered for this session"),
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ func Setup(
|
||||||
|
|
||||||
r0mux.Handle("/register/available", common.MakeExternalAPI("registerAvailable", func(req *http.Request) util.JSONResponse {
|
r0mux.Handle("/register/available", common.MakeExternalAPI("registerAvailable", func(req *http.Request) util.JSONResponse {
|
||||||
return readers.RegisterAvailable(req, accountDB)
|
return readers.RegisterAvailable(req, accountDB)
|
||||||
})).Methods("GET", "OPTIONS")
|
})).Methods("GET")
|
||||||
|
|
||||||
r0mux.Handle("/directory/room/{roomAlias}",
|
r0mux.Handle("/directory/room/{roomAlias}",
|
||||||
common.MakeAuthAPI("directory_room", deviceDB, func(req *http.Request, device *authtypes.Device) util.JSONResponse {
|
common.MakeAuthAPI("directory_room", deviceDB, func(req *http.Request, device *authtypes.Device) util.JSONResponse {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue