satellite/admin: create an endpoint for isAccountFrozen
Endpoint checks if an account is frozen or unfrozen. relates to https://github.com/storj/storj/issues/5398 Change-Id: I8ff44063870327e05cf729eaaaed1da6c5fa9217
This commit is contained in:
parent
471f9e4e10
commit
678bb12d4b
@ -599,6 +599,8 @@ func NewAPI(log *zap.Logger, full *identity.FullIdentity, db DB,
|
||||
return nil, errs.Combine(err, peer.Close())
|
||||
}
|
||||
|
||||
accountFreezeService := console.NewAccountFreezeService(db.Console().AccountFreezeEvents(), db.Console().Users(), db.Console().Projects())
|
||||
|
||||
peer.Console.Endpoint = consoleweb.NewServer(
|
||||
peer.Log.Named("console:endpoint"),
|
||||
consoleConfig,
|
||||
@ -608,6 +610,7 @@ func NewAPI(log *zap.Logger, full *identity.FullIdentity, db DB,
|
||||
peer.Marketing.PartnersService,
|
||||
peer.Analytics.Service,
|
||||
peer.ABTesting.Service,
|
||||
accountFreezeService,
|
||||
peer.Console.Listener,
|
||||
config.Payments.StripeCoinPayments.StripePublicKey,
|
||||
config.Payments.UsagePrice,
|
||||
|
@ -54,6 +54,7 @@ type Auth struct {
|
||||
ActivateAccountURL string
|
||||
SatelliteName string
|
||||
service *console.Service
|
||||
accountFreezeService *console.AccountFreezeService
|
||||
analytics *analytics.Service
|
||||
mailService *mailservice.Service
|
||||
cookieAuth *consolewebauth.CookieAuth
|
||||
@ -61,7 +62,7 @@ type Auth struct {
|
||||
}
|
||||
|
||||
// NewAuth is a constructor for api auth controller.
|
||||
func NewAuth(log *zap.Logger, service *console.Service, mailService *mailservice.Service, cookieAuth *consolewebauth.CookieAuth, partners *rewards.PartnersService, analytics *analytics.Service, satelliteName string, externalAddress string, letUsKnowURL string, termsAndConditionsURL string, contactInfoURL string, generalRequestURL string) *Auth {
|
||||
func NewAuth(log *zap.Logger, service *console.Service, accountFreezeService *console.AccountFreezeService, mailService *mailservice.Service, cookieAuth *consolewebauth.CookieAuth, partners *rewards.PartnersService, analytics *analytics.Service, satelliteName string, externalAddress string, letUsKnowURL string, termsAndConditionsURL string, contactInfoURL string, generalRequestURL string) *Auth {
|
||||
return &Auth{
|
||||
log: log,
|
||||
ExternalAddress: externalAddress,
|
||||
@ -74,6 +75,7 @@ func NewAuth(log *zap.Logger, service *console.Service, mailService *mailservice
|
||||
CancelPasswordRecoveryURL: externalAddress + "cancel-password-recovery/",
|
||||
ActivateAccountURL: externalAddress + "activation/",
|
||||
service: service,
|
||||
accountFreezeService: accountFreezeService,
|
||||
mailService: mailService,
|
||||
cookieAuth: cookieAuth,
|
||||
partners: partners,
|
||||
@ -377,6 +379,38 @@ func loadSession(req *http.Request) string {
|
||||
return sessionCookie.Value
|
||||
}
|
||||
|
||||
// IsAccountFrozen checks to see if an account is frozen.
|
||||
func (a *Auth) IsAccountFrozen(w http.ResponseWriter, r *http.Request) {
|
||||
type FrozenResult struct {
|
||||
Frozen bool `json:"frozen"`
|
||||
}
|
||||
|
||||
ctx := r.Context()
|
||||
var err error
|
||||
defer mon.Task()(&ctx)(&err)
|
||||
|
||||
userID, err := a.service.GetUserID(ctx)
|
||||
if err != nil {
|
||||
a.serveJSONError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
frozenBool, err := a.accountFreezeService.IsUserFrozen(ctx, userID)
|
||||
if err != nil {
|
||||
a.serveJSONError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
err = json.NewEncoder(w).Encode(FrozenResult{
|
||||
Frozen: frozenBool,
|
||||
})
|
||||
if err != nil {
|
||||
a.log.Error("could not encode account status", zap.Error(ErrAuthAPI.Wrap(err)))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateAccount updates user's full name and short name.
|
||||
func (a *Auth) UpdateAccount(w http.ResponseWriter, r *http.Request) {
|
||||
ctx := r.Context()
|
||||
|
@ -293,7 +293,7 @@ func TestDeleteAccount(t *testing.T) {
|
||||
|
||||
actualHandler := func(r *http.Request) (status int, body []byte) {
|
||||
rr := httptest.NewRecorder()
|
||||
authController := consoleapi.NewAuth(log, nil, nil, nil, nil, nil, "", "", "", "", "", "")
|
||||
authController := consoleapi.NewAuth(log, nil, nil, nil, nil, nil, nil, "", "", "", "", "", "")
|
||||
authController.DeleteAccount(rr, r)
|
||||
|
||||
//nolint:bodyclose
|
||||
|
@ -86,6 +86,17 @@ func TestAuth(t *testing.T) {
|
||||
require.NotEmpty(test.t, userIdentifier.ID)
|
||||
}
|
||||
|
||||
{ // Get_FreezeStatus
|
||||
resp, body := test.request(http.MethodGet, "/auth/account/freezestatus", nil)
|
||||
require.Equal(test.t, http.StatusOK, resp.StatusCode)
|
||||
require.Contains(test.t, body, "frozen")
|
||||
|
||||
var freezestatus struct{ Frozen bool }
|
||||
require.NoError(test.t, json.Unmarshal([]byte(body), &freezestatus))
|
||||
require.Equal(test.t, http.StatusOK, resp.StatusCode)
|
||||
require.False(test.t, freezestatus.Frozen)
|
||||
}
|
||||
|
||||
{ // Logout
|
||||
resp, _ := test.request(http.MethodPost, "/auth/logout", nil)
|
||||
cookie := findCookie(resp, "_tokenKey")
|
||||
|
@ -206,7 +206,7 @@ func (a *apiAuth) RemoveAuthCookie(w http.ResponseWriter) {
|
||||
}
|
||||
|
||||
// NewServer creates new instance of console server.
|
||||
func NewServer(logger *zap.Logger, config Config, service *console.Service, oidcService *oidc.Service, mailService *mailservice.Service, partners *rewards.PartnersService, analytics *analytics.Service, abTesting *abtesting.Service, listener net.Listener, stripePublicKey string, usagePrice paymentsconfig.ProjectUsagePrice, nodeURL storj.NodeURL) *Server {
|
||||
func NewServer(logger *zap.Logger, config Config, service *console.Service, oidcService *oidc.Service, mailService *mailservice.Service, partners *rewards.PartnersService, analytics *analytics.Service, abTesting *abtesting.Service, accountFreezeService *console.AccountFreezeService, listener net.Listener, stripePublicKey string, usagePrice paymentsconfig.ProjectUsagePrice, nodeURL storj.NodeURL) *Server {
|
||||
server := Server{
|
||||
log: logger,
|
||||
config: config,
|
||||
@ -278,12 +278,13 @@ func NewServer(logger *zap.Logger, config Config, service *console.Service, oidc
|
||||
server.withAuth(http.HandlerFunc(usageLimitsController.DailyUsage)),
|
||||
).Methods(http.MethodGet)
|
||||
|
||||
authController := consoleapi.NewAuth(logger, service, mailService, server.cookieAuth, partners, server.analytics, config.SatelliteName, server.config.ExternalAddress, config.LetUsKnowURL, config.TermsAndConditionsURL, config.ContactInfoURL, config.GeneralRequestURL)
|
||||
authController := consoleapi.NewAuth(logger, service, accountFreezeService, mailService, server.cookieAuth, partners, server.analytics, config.SatelliteName, server.config.ExternalAddress, config.LetUsKnowURL, config.TermsAndConditionsURL, config.ContactInfoURL, config.GeneralRequestURL)
|
||||
authRouter := router.PathPrefix("/api/v0/auth").Subrouter()
|
||||
authRouter.Handle("/account", server.withAuth(http.HandlerFunc(authController.GetAccount))).Methods(http.MethodGet)
|
||||
authRouter.Handle("/account", server.withAuth(http.HandlerFunc(authController.UpdateAccount))).Methods(http.MethodPatch)
|
||||
authRouter.Handle("/account/change-email", server.withAuth(http.HandlerFunc(authController.ChangeEmail))).Methods(http.MethodPost)
|
||||
authRouter.Handle("/account/change-password", server.withAuth(http.HandlerFunc(authController.ChangePassword))).Methods(http.MethodPost)
|
||||
authRouter.Handle("/account/freezestatus", server.withAuth(http.HandlerFunc(authController.IsAccountFrozen))).Methods(http.MethodGet)
|
||||
authRouter.Handle("/account/delete", server.withAuth(http.HandlerFunc(authController.DeleteAccount))).Methods(http.MethodPost)
|
||||
authRouter.Handle("/mfa/enable", server.withAuth(http.HandlerFunc(authController.EnableUserMFA))).Methods(http.MethodPost)
|
||||
authRouter.Handle("/mfa/disable", server.withAuth(http.HandlerFunc(authController.DisableUserMFA))).Methods(http.MethodPost)
|
||||
|
@ -87,7 +87,7 @@ func (chore *Chore) Run(ctx context.Context) (err error) {
|
||||
chore.log.Error("error generating activation token", zap.Error(err))
|
||||
return nil
|
||||
}
|
||||
authController := consoleapi.NewAuth(chore.log, nil, nil, nil, nil, nil, "", chore.address, "", "", "", "")
|
||||
authController := consoleapi.NewAuth(chore.log, nil, nil, nil, nil, nil, nil, "", chore.address, "", "", "", "")
|
||||
|
||||
link := authController.ActivateAccountURL + "?token=" + token
|
||||
userName := u.ShortName
|
||||
|
Loading…
Reference in New Issue
Block a user