Files
portal/services/userService.go
2026-06-25 11:46:32 +02:00

102 lines
3.6 KiB
Go

package services
import (
"context"
"fmt"
"git.dynamicdiscord.de/malobeo/portal/internal"
"git.dynamicdiscord.de/malobeo/portal/openapi"
"github.com/gin-gonic/gin"
"os"
)
var (
Users UserService = UserService{}
)
type UserService struct{}
// return jwt tokenstring on success
func (u *UserService) Login(username string, password string) (*openapi.Token, error) {
//grantType := "grantType_example" // string | (optional)
//scope := "scope_example" // string | (optional) (default to "")
//clientId := "clientId_example" // string | (optional)
//clientSecret := "clientSecret_example" // string | (optional)
fmt.Fprintf(os.Stdout, "Try login with username: %s, password: %s", username, password)
apiClient := internal.GetApiClient(nil)
resp, r, err := apiClient.TokenAPI.LoginForAccessTokenApiV1TokenPost(context.Background()).Username(username).Password(password).Execute()
//configuration := openapi.NewConfiguration()
//configuration.Host = "localhost:8000"
//configuration.Scheme = "http"
//apiClient := openapi.NewAPIClient(configuration)
//resp, r, err := apiClient.TokenAPI.LoginForAccessTokenTokenPost(context.Background()).Username(username).Password(password).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `TokenAPI.LoginForAccessTokenTokenPost``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
return nil, err
}
// response from `LoginForAccessTokenTokenPost`: Token
fmt.Fprintf(os.Stdout, "Response from `TokenAPI.LoginForAccessTokenTokenPost`: %v\n", resp)
return resp, nil
}
func (u *UserService) GetById(c *gin.Context, userId int32) (*openapi.UserResponse, error) {
apiClient := internal.GetApiClient(c)
resp, r, err := apiClient.UsersAPI.ReadUserApiV1UsersUserIdGet(context.Background(), userId).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `UserApi.GetById``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
return nil, err
}
// response from `LoginForAccessTokenTokenPost`: Token
fmt.Fprintf(os.Stdout, "Response from `UserApi.GetById`: %v\n", resp)
return resp, nil
}
func (u *UserService) GetAll(c *gin.Context) ([]openapi.UserResponse, error) {
apiClient := internal.GetApiClient(c)
resp, r, err := apiClient.UsersAPI.ReadUsersApiV1UsersGet(context.Background()).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `UserApi.GetAll``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
return nil, err
}
// response from `LoginForAccessTokenTokenPost`: Token
fmt.Fprintf(os.Stdout, "Response from `UserApi.GetAll`: %v\n", resp)
return resp, nil
}
func (u *UserService) GetByName(c *gin.Context, username string) (openapi.UserResponse, error) {
users, err := u.GetAll(c)
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `GetByName``: %v\n", err)
return openapi.UserResponse{}, err
}
for _, user := range users {
if user.Name == username {
return user, nil
}
}
return openapi.UserResponse{}, fmt.Errorf("Not found")
}
func (u *UserService) GetByAuthHeader(c *gin.Context) (openapi.UserResponse, error) {
apiClient := internal.GetApiClient(c)
resp, r, err := apiClient.UsersAPI.GetCurrentUserApiV1UsersCurrentGet(context.Background()).Execute()
if err != nil {
fmt.Fprintf(os.Stderr, "Error when calling `UserApi.GetById``: %v\n", err)
fmt.Fprintf(os.Stderr, "Full HTTP response: %v\n", r)
return openapi.UserResponse{}, err
}
// response from `LoginForAccessTokenTokenPost`: Token
fmt.Fprintf(os.Stdout, "Response from `UserApi.GetById`: %v\n", resp)
return *resp, nil
}