aboutsummaryrefslogtreecommitdiff
path: root/userapi/internal
diff options
context:
space:
mode:
authorsanthoshivan23 <47689668+santhoshivan23@users.noreply.github.com>2023-06-22 22:07:21 +0530
committerGitHub <noreply@github.com>2023-06-22 16:37:21 +0000
commit45082d4dcefadceada1b4374f3876365887cfd4a (patch)
tree899fda990a71f16eb05073098196a2a1a1218bd3 /userapi/internal
parenta734b112c6577a23b87c6b54c50fb2e9a629cf2b (diff)
feat: admin APIs for token authenticated registration (#3101)
### Pull Request Checklist <!-- Please read https://matrix-org.github.io/dendrite/development/contributing before submitting your pull request --> * [x] I have added Go unit tests or [Complement integration tests](https://github.com/matrix-org/complement) for this PR _or_ I have justified why this PR doesn't need tests * [x] Pull request includes a [sign off below using a legally identifiable name](https://matrix-org.github.io/dendrite/development/contributing#sign-off) _or_ I have already signed off privately Signed-off-by: `Santhoshivan Amudhan santhoshivan23@gmail.com`
Diffstat (limited to 'userapi/internal')
-rw-r--r--userapi/internal/user_api.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/userapi/internal/user_api.go b/userapi/internal/user_api.go
index 32f3d84b..4305c13a 100644
--- a/userapi/internal/user_api.go
+++ b/userapi/internal/user_api.go
@@ -33,6 +33,7 @@ import (
"github.com/sirupsen/logrus"
"golang.org/x/crypto/bcrypt"
+ clientapi "github.com/matrix-org/dendrite/clientapi/api"
"github.com/matrix-org/dendrite/clientapi/userutil"
"github.com/matrix-org/dendrite/internal/eventutil"
"github.com/matrix-org/dendrite/internal/pushgateway"
@@ -63,6 +64,37 @@ type UserInternalAPI struct {
Updater *DeviceListUpdater
}
+func (a *UserInternalAPI) PerformAdminCreateRegistrationToken(ctx context.Context, registrationToken *clientapi.RegistrationToken) (bool, error) {
+ exists, err := a.DB.RegistrationTokenExists(ctx, *registrationToken.Token)
+ if err != nil {
+ return false, err
+ }
+ if exists {
+ return false, fmt.Errorf("token: %s already exists", *registrationToken.Token)
+ }
+ _, err = a.DB.InsertRegistrationToken(ctx, registrationToken)
+ if err != nil {
+ return false, fmt.Errorf("Error creating token: %s"+err.Error(), *registrationToken.Token)
+ }
+ return true, nil
+}
+
+func (a *UserInternalAPI) PerformAdminListRegistrationTokens(ctx context.Context, returnAll bool, valid bool) ([]clientapi.RegistrationToken, error) {
+ return a.DB.ListRegistrationTokens(ctx, returnAll, valid)
+}
+
+func (a *UserInternalAPI) PerformAdminGetRegistrationToken(ctx context.Context, tokenString string) (*clientapi.RegistrationToken, error) {
+ return a.DB.GetRegistrationToken(ctx, tokenString)
+}
+
+func (a *UserInternalAPI) PerformAdminDeleteRegistrationToken(ctx context.Context, tokenString string) error {
+ return a.DB.DeleteRegistrationToken(ctx, tokenString)
+}
+
+func (a *UserInternalAPI) PerformAdminUpdateRegistrationToken(ctx context.Context, tokenString string, newAttributes map[string]interface{}) (*clientapi.RegistrationToken, error) {
+ return a.DB.UpdateRegistrationToken(ctx, tokenString, newAttributes)
+}
+
func (a *UserInternalAPI) InputAccountData(ctx context.Context, req *api.InputAccountDataRequest, res *api.InputAccountDataResponse) error {
local, domain, err := gomatrixserverlib.SplitID('@', req.UserID)
if err != nil {