...

Source file src/edge-infra.dev/pkg/edge/api/graph/resolver/auth_queries.resolvers.go

Documentation: edge-infra.dev/pkg/edge/api/graph/resolver

     1  package resolver
     2  
     3  // This file will be automatically regenerated based on the schema, any resolver implementations
     4  // will be copied through when generating and any unknown code will be moved to the end.
     5  // Code generated by github.com/99designs/gqlgen version v0.17.45
     6  
     7  import (
     8  	"context"
     9  	"fmt"
    10  
    11  	"edge-infra.dev/pkg/edge/api/graph/mapper"
    12  	"edge-infra.dev/pkg/edge/api/graph/model"
    13  	"edge-infra.dev/pkg/edge/api/middleware"
    14  	"edge-infra.dev/pkg/edge/api/utils"
    15  	"edge-infra.dev/pkg/edge/bsl"
    16  	"edge-infra.dev/pkg/edge/constants/api/banner"
    17  )
    18  
    19  // Register is the resolver for the register field.
    20  func (r *mutationResolver) Register(ctx context.Context, firstName string, lastName string, username string, email string, password string, organization string) (string, error) {
    21  	organization = bsl.TrimOrg(organization)
    22  	_, err := r.TenantService.GetByName(ctx, organization)
    23  	if err != nil {
    24  		return "", fmt.Errorf("organization %s, does not exist", organization)
    25  	}
    26  	authPayload, err := r.UserManagementService.Register(ctx, firstName, lastName, username, email, password, organization)
    27  	if err != nil {
    28  		return authPayload, err
    29  	}
    30  	err = r.RoleService.AddRoleToUserLegacy(ctx, organization, username, string(model.RoleEdgeBannerViewer))
    31  	return authPayload, err
    32  }
    33  
    34  // Login is the resolver for the login field.
    35  func (r *mutationResolver) Login(ctx context.Context, username string, password string, organization string) (*model.AuthPayload, error) {
    36  	organization = bsl.TrimOrg(organization)
    37  	_, err := r.TenantService.GetByName(ctx, organization)
    38  	if err != nil {
    39  		return nil, fmt.Errorf("organization %s, does not exist", organization)
    40  	}
    41  	payload, err := r.UserManagementService.Login(ctx, username, password, organization)
    42  	return payload, err
    43  }
    44  
    45  // LoginWithOkta is the resolver for the loginWithOkta field.
    46  func (r *mutationResolver) LoginWithOkta(ctx context.Context, oktaToken string, refreshToken string, organization string) (*model.OktaAuthPayload, error) {
    47  	return r.UserManagementService.LoginWithOktaToken(ctx, oktaToken, refreshToken, organization)
    48  }
    49  
    50  // VerifyOktaToken is the resolver for the verifyOktaToken field.
    51  func (r *mutationResolver) VerifyOktaToken(ctx context.Context, oktaToken string) (bool, error) {
    52  	resp, err := r.UserManagementService.VerifyOktaToken(ctx, oktaToken)
    53  	if err != nil {
    54  		return false, err
    55  	}
    56  	return resp.Active, nil
    57  }
    58  
    59  // UpdateUserPassword is the resolver for the updateUserPassword field.
    60  func (r *mutationResolver) UpdateUserPassword(ctx context.Context, username string, newPassword string, organization string) (*model.EdgeResponsePayload, error) {
    61  	organization = bsl.GetOrgShortName(organization)
    62  	if err := r.UserManagementService.ResetPassword(ctx, username, newPassword, organization); err != nil {
    63  		return nil, err
    64  	}
    65  	return mapper.ToEdgeResponsePayload(200, "Updated Successfully!"), nil
    66  }
    67  
    68  // DeleteUser is the resolver for the deleteUser field.
    69  func (r *mutationResolver) DeleteUser(ctx context.Context, username string) (bool, error) {
    70  	if err := r.UserManagementService.Delete(ctx, username); err != nil {
    71  		return false, err
    72  	}
    73  	return true, nil
    74  }
    75  
    76  // Logout is the resolver for the logout field.
    77  func (r *mutationResolver) Logout(ctx context.Context) (bool, error) {
    78  	return true, nil
    79  }
    80  
    81  // ForgotPassword is the resolver for the forgotPassword field.
    82  func (r *mutationResolver) ForgotPassword(ctx context.Context, username string, organization string) (bool, error) {
    83  	organization = bsl.GetOrgShortName(organization)
    84  	if err := r.RoleService.RecoverPassword(ctx, username, organization); err != nil {
    85  		return false, err
    86  	}
    87  	return true, nil
    88  }
    89  
    90  // UpdatePasswordWithToken is the resolver for the updatePasswordWithToken field.
    91  func (r *mutationResolver) UpdatePasswordWithToken(ctx context.Context, token string, organization string, newPassword string) (bool, error) {
    92  	if err := r.UserManagementService.UpdateUserPasswordWithToken(ctx, token, organization, newPassword); err != nil {
    93  		return false, err
    94  	}
    95  	return true, nil
    96  }
    97  
    98  // TokenExchange is the resolver for the tokenExchange field.
    99  func (r *mutationResolver) TokenExchange(ctx context.Context) (string, error) {
   100  	user := middleware.ForContext(ctx)
   101  	organization := bsl.GetOrgShortName(user.Organization)
   102  	return r.UserManagementService.TokenExchange(ctx, organization, user, "bsl")
   103  }
   104  
   105  // SessionRefresh is the resolver for the sessionRefresh field.
   106  func (r *mutationResolver) SessionRefresh(ctx context.Context, provider model.AuthProvider) (string, error) {
   107  	user := middleware.ForContext(ctx)
   108  	organization := bsl.GetOrgShortName(user.Organization)
   109  	return r.UserManagementService.TokenExchange(ctx, organization, user, provider.String())
   110  }
   111  
   112  // UpdateUserProfile is the resolver for the updateUserProfile field.
   113  func (r *mutationResolver) UpdateUserProfile(ctx context.Context, user model.UpdateUser) (*model.User, error) {
   114  	currentUser := middleware.ForContext(ctx)
   115  	if currentUser == nil {
   116  		return nil, fmt.Errorf("missing authenticated user")
   117  	}
   118  	organization := bsl.GetOrgShortName(currentUser.Organization)
   119  	userProfile, err := r.UserManagementService.GetUser(ctx, user.Username, organization, currentUser.Token, currentUser.AuthProvider)
   120  	if err != nil {
   121  		return nil, err
   122  	}
   123  	if utils.IsNullOrEmpty(user.Status) {
   124  		user.Status = &userProfile.Status
   125  	}
   126  	if utils.IsNullOrEmpty(user.FamilyName) {
   127  		user.FamilyName = &userProfile.FamilyName
   128  	}
   129  	if utils.IsNullOrEmpty(user.Email) {
   130  		user.Email = userProfile.Email
   131  	}
   132  	if utils.IsNullOrEmpty(user.FullName) {
   133  		user.FullName = &userProfile.FullName
   134  	}
   135  	if utils.IsNullOrEmpty(user.GivenName) {
   136  		user.GivenName = &userProfile.GivenName
   137  	}
   138  	return r.UserManagementService.UpdateUserProfile(ctx, &user)
   139  }
   140  
   141  // Users is the resolver for the users field.
   142  func (r *queryResolver) Users(ctx context.Context, bannerEdgeID *string) ([]*model.User, error) {
   143  	var users []*model.User
   144  	var errs error
   145  	if !utils.IsNullOrEmpty(bannerEdgeID) {
   146  		b, err := r.BannerService.GetBanner(ctx, *bannerEdgeID)
   147  		if err != nil {
   148  			return nil, err
   149  		}
   150  		if banner.Type(b.BannerType) == banner.Org {
   151  			users, errs = r.UserManagementService.GetUsersForOrgBanner(ctx, b.Name)
   152  		} else {
   153  			users, errs = r.BannerService.GetUsersForEuBanner(ctx, b.BannerBSLId)
   154  		}
   155  	} else {
   156  		users, errs = r.UserManagementService.GetUsers(ctx)
   157  	}
   158  	if errs != nil {
   159  		return users, errs
   160  	}
   161  	return users, errs
   162  }
   163  
   164  // UserData is the resolver for the userData field.
   165  func (r *queryResolver) UserData(ctx context.Context, username string) (*model.UserData, error) {
   166  	banners, err := r.BannerService.GetUserAssignedBanners(ctx, username)
   167  	if err != nil {
   168  		return &model.UserData{}, err
   169  	}
   170  	roles, err := r.RoleService.GetEdgeGroupsForUserUser(ctx, username)
   171  	if err != nil {
   172  		return &model.UserData{}, err
   173  	}
   174  	return &model.UserData{AssignedBanners: banners, Roles: roles}, nil
   175  }
   176  
   177  // WhoAmI is the resolver for the whoAmI field.
   178  func (r *queryResolver) WhoAmI(ctx context.Context) (*model.User, error) {
   179  	user := middleware.ForContext(ctx)
   180  	if user == nil {
   181  		return nil, fmt.Errorf("missing authenticated user")
   182  	}
   183  	organization := bsl.GetOrgShortName(user.Organization)
   184  	return r.UserManagementService.WhoAmI(ctx, user.Username, organization, user.Token, user.AuthProvider)
   185  }
   186  
   187  // User is the resolver for the user field.
   188  func (r *queryResolver) User(ctx context.Context, username string) (*model.User, error) {
   189  	user := middleware.ForContext(ctx)
   190  	if user == nil {
   191  		return nil, fmt.Errorf("missing authenticated user")
   192  	}
   193  	organization := bsl.GetOrgShortName(user.Organization)
   194  	userProfile, err := r.UserManagementService.GetUser(ctx, username, organization, user.Token, user.AuthProvider)
   195  	if err != nil {
   196  		return nil, err
   197  	}
   198  	return userProfile, nil
   199  }
   200  
   201  // SessionUserEdgeRole is the resolver for the sessionUserEdgeRole field.
   202  func (r *queryResolver) SessionUserEdgeRole(ctx context.Context) ([]string, error) {
   203  	user := middleware.ForContext(ctx)
   204  
   205  	data, err := r.UserManagementService.GetSessionUserEdgeRoles(ctx, user.Username, user.Token, user.Organization, user.AuthProvider)
   206  	if err != nil {
   207  		return nil, err
   208  	}
   209  	return data, nil
   210  }
   211  

View as plain text