2022-05-03 15:26:32 +05:30
|
|
|
package auth
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2022-10-06 20:13:30 +05:30
|
|
|
|
2025-03-20 21:01:41 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/alertmanager"
|
2025-04-25 19:38:15 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/modules/organization"
|
2025-05-14 23:12:55 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/modules/quickfilter"
|
|
|
|
|
"github.com/SigNoz/signoz/pkg/modules/user"
|
2025-03-25 22:02:34 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/valuer"
|
2022-05-03 15:26:32 +05:30
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/query-service/model"
|
|
|
|
|
"github.com/SigNoz/signoz/pkg/types"
|
2022-05-03 15:26:32 +05:30
|
|
|
)
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
func RegisterOrgAndFirstUser(ctx context.Context, req *types.PostableRegisterOrgAndAdmin, organizationModule organization.Module, userModule user.Module) (*types.User, *model.ApiError) {
|
2022-10-06 20:13:30 +05:30
|
|
|
if req.Email == "" {
|
|
|
|
|
return nil, model.BadRequest(model.ErrEmailRequired{})
|
|
|
|
|
}
|
2022-05-03 15:26:32 +05:30
|
|
|
|
2022-10-06 20:13:30 +05:30
|
|
|
if req.Password == "" {
|
|
|
|
|
return nil, model.BadRequest(model.ErrPasswordRequired{})
|
|
|
|
|
}
|
|
|
|
|
|
2025-04-25 19:38:15 +05:30
|
|
|
organization := types.NewOrganization(req.OrgDisplayName)
|
|
|
|
|
err := organizationModule.Create(ctx, organization)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, model.InternalError(err)
|
2022-10-06 20:13:30 +05:30
|
|
|
}
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
user, err := types.NewUser(req.Name, req.Email, types.RoleAdmin.String(), organization.ID.StringValue())
|
2022-10-06 20:13:30 +05:30
|
|
|
if err != nil {
|
2025-05-14 23:12:55 +05:30
|
|
|
return nil, model.InternalError(err)
|
2022-10-06 20:13:30 +05:30
|
|
|
}
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
password, err := types.NewFactorPassword(req.Password)
|
2022-10-06 20:13:30 +05:30
|
|
|
if err != nil {
|
2025-05-14 23:12:55 +05:30
|
|
|
return nil, model.InternalError(err)
|
2022-10-06 20:13:30 +05:30
|
|
|
}
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
user, err = userModule.CreateUserWithPassword(ctx, user, password)
|
2022-10-06 20:13:30 +05:30
|
|
|
if err != nil {
|
2025-05-14 23:12:55 +05:30
|
|
|
return nil, model.InternalError(err)
|
2022-05-03 15:26:32 +05:30
|
|
|
}
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
return user, nil
|
2022-05-03 15:26:32 +05:30
|
|
|
}
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
// First user registration
|
2025-05-24 22:00:12 +05:30
|
|
|
func Register(ctx context.Context, req *types.PostableRegisterOrgAndAdmin, alertmanager alertmanager.Alertmanager, organizationModule organization.Module, userModule user.Module, quickfiltermodule quickfilter.Module) (*types.User, *model.ApiError) {
|
2025-05-14 23:12:55 +05:30
|
|
|
user, err := RegisterOrgAndFirstUser(ctx, req, organizationModule, userModule)
|
2022-05-03 15:26:32 +05:30
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
if err := alertmanager.SetDefaultConfig(ctx, user.OrgID); err != nil {
|
|
|
|
|
return nil, model.InternalError(err)
|
2023-11-17 16:18:31 +05:30
|
|
|
}
|
2023-01-07 02:54:27 +05:30
|
|
|
|
2025-05-14 23:12:55 +05:30
|
|
|
if err := quickfiltermodule.SetDefaultConfig(ctx, valuer.MustNewUUID(user.OrgID)); err != nil {
|
|
|
|
|
return nil, model.InternalError(err)
|
2022-05-03 15:26:32 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return user, nil
|
|
|
|
|
}
|