77 "time"
88
99 "github.com/go-fuego/fuego"
10+ "github.com/google/uuid"
1011 "github.com/raghavyuva/nixopus-api/internal/features/domain/types"
1112 "github.com/raghavyuva/nixopus-api/internal/features/logger"
1213 "github.com/raghavyuva/nixopus-api/internal/utils"
@@ -15,24 +16,46 @@ import (
1516)
1617
1718func (c * DomainsController ) GetDomains (f fuego.ContextNoBody ) (* shared_types.Response , error ) {
18- organization_id := f .QueryParam ("id" )
19-
2019 w , r := f .Response (), f .Request ()
2120
22- user := utils .GetUser (w , r )
21+ organization_id := utils .GetOrganizationID (r )
22+ if organization_id == uuid .Nil {
23+ c .logger .Log (logger .Error , "invalid organization id" , "" )
24+ return nil , fuego.HTTPError {
25+ Err : types .ErrMissingID ,
26+ Status : http .StatusBadRequest ,
27+ }
28+ }
2329
30+ user := utils .GetUser (w , r )
2431 if user == nil {
32+ c .logger .Log (logger .Error , "unauthorized user" , "" )
2533 return nil , fuego.HTTPError {
26- Err : nil ,
34+ Err : types . ErrAccessDenied ,
2735 Status : http .StatusUnauthorized ,
2836 }
2937 }
3038
3139 c .logger .Log (logger .Info , "fetching domains" , fmt .Sprintf ("organization_id: %s" , organization_id ))
3240
33- domains , err := c .service .GetDomains (organization_id , user .ID )
41+ domains , err := c .service .GetDomains (organization_id . String () , user .ID )
3442 if err != nil {
3543 c .logger .Log (logger .Error , err .Error (), "" )
44+
45+ if isPermissionError (err ) {
46+ return nil , fuego.HTTPError {
47+ Err : err ,
48+ Status : http .StatusForbidden ,
49+ }
50+ }
51+
52+ if err == types .ErrDomainNotFound {
53+ return nil , fuego.HTTPError {
54+ Err : err ,
55+ Status : http .StatusNotFound ,
56+ }
57+ }
58+
3659 return nil , fuego.HTTPError {
3760 Err : err ,
3861 Status : http .StatusInternalServerError ,
@@ -49,22 +72,53 @@ func (c *DomainsController) GetDomains(f fuego.ContextNoBody) (*shared_types.Res
4972func (c * DomainsController ) GenerateRandomSubDomain (f fuego.ContextNoBody ) (* shared_types.Response , error ) {
5073 w , r := f .Response (), f .Request ()
5174
52- organization_id := f .QueryParam ("id" )
75+ organization_id := utils .GetOrganizationID (r )
76+ if organization_id == uuid .Nil {
77+ c .logger .Log (logger .Error , "invalid organization id" , "" )
78+ return nil , fuego.HTTPError {
79+ Err : types .ErrMissingID ,
80+ Status : http .StatusBadRequest ,
81+ }
82+ }
83+
84+ user := utils .GetUser (w , r )
85+ if user == nil {
86+ c .logger .Log (logger .Error , "unauthorized user" , "" )
87+ return nil , fuego.HTTPError {
88+ Err : types .ErrAccessDenied ,
89+ Status : http .StatusUnauthorized ,
90+ }
91+ }
5392
54- domains , err := c .service .GetDomains (organization_id , utils . GetUser ( w , r ) .ID )
93+ domains , err := c .service .GetDomains (organization_id . String (), user .ID )
5594 if err != nil {
5695 c .logger .Log (logger .Error , err .Error (), "" )
96+
97+ if isPermissionError (err ) {
98+ return nil , fuego.HTTPError {
99+ Err : err ,
100+ Status : http .StatusForbidden ,
101+ }
102+ }
103+
104+ if err == types .ErrDomainNotFound {
105+ return nil , fuego.HTTPError {
106+ Err : err ,
107+ Status : http .StatusNotFound ,
108+ }
109+ }
110+
57111 return nil , fuego.HTTPError {
58112 Err : err ,
59113 Status : http .StatusInternalServerError ,
60114 }
61115 }
62116
63117 if len (domains ) == 0 {
64- c .logger .Log (logger .Error , "no domains available" , "" )
118+ c .logger .Log (logger .Error , "no domains available for subdomain generation " , "" )
65119 return nil , fuego.HTTPError {
66- Err : nil ,
67- Status : http .StatusBadRequest ,
120+ Err : types . ErrDomainNotFound ,
121+ Status : http .StatusNotFound ,
68122 }
69123 }
70124
0 commit comments