Skip to content

Add AccountService and Repository #512

@fcaps

Description

@fcaps

All api-calls, that are doing some kind of account manipulation like: changePW, linkSteam, changeEmail etc.
should be only accessed through a AccountService/Repo.
This would have multiple benefits.

  1. auto refresh token if expired (via JavaApiService)
  2. no old "request" style code
  3. error-handling can be done at a single place
  4. clear parameters and return values
  5. they are reusable (saw some duplicated code)
  6. less testing hassle with mocking http, the service could also be injected in the router/controller

A solution could look something like:
Old:

        request.post({
            url: process.env.API_URL + '/users/changePassword',
            headers: { Authorization: 'Bearer ' + req.requestContainer.get('UserService').getUser()?.oAuthPassport.token },
            form: { currentPassword: oldPassword, newPassword }
        }, function (err, res, body) {
            if (err || res.statusCode !== 200) {
                error.parseApiErrors(body, flash)
                return overallRes.render('account/changePassword', { flash })
            }

            // Successfully reset password
            flash.class = 'alert-success'
            flash.messages = [{ msg: 'Your password was changed successfully. Please use the new password to log in!' }]
            flash.type = 'Success!'

            overallRes.render('account/changePassword', { flash })
        })

new:

        accountService.changePassword(oldPassword, newPassword).then(() => {
            res.render('account/changePassword', { success: true })
        }).catch((apiError) => {
            res.render('account/changePassword', { error: apiError })
        })

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions