From 4e48320cf19e12a7195643dcbcf0360acb0821d8 Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Mon, 31 Jan 2022 11:35:24 +0530 Subject: [PATCH] fix: bug with authorizer url --- app/favicon_io/android-chrome-192x192.png | Bin 0 -> 16538 bytes app/favicon_io/android-chrome-512x512.png | Bin 0 -> 78580 bytes app/favicon_io/apple-touch-icon.png | Bin 0 -> 14869 bytes app/favicon_io/favicon-16x16.png | Bin 0 -> 528 bytes app/favicon_io/favicon-32x32.png | Bin 0 -> 1148 bytes app/favicon_io/favicon.ico | Bin 0 -> 15406 bytes .../favicon_io/android-chrome-192x192.png | Bin 0 -> 16538 bytes .../favicon_io/android-chrome-512x512.png | Bin 0 -> 78580 bytes dashboard/favicon_io/apple-touch-icon.png | Bin 0 -> 14869 bytes dashboard/favicon_io/favicon-16x16.png | Bin 0 -> 528 bytes dashboard/favicon_io/favicon-32x32.png | Bin 0 -> 1148 bytes dashboard/favicon_io/favicon.ico | Bin 0 -> 15406 bytes dashboard/src/graphql/queries/index.ts | 1 + dashboard/src/pages/Users.tsx | 9 ++- dashboard/src/utils/index.ts | 5 +- server/constants/env.go | 1 + server/cookie/admin_cookie.go | 6 +- server/cookie/cookie.go | 11 ++-- server/db/models/env.go | 4 +- server/db/models/session.go | 4 +- server/db/models/user.go | 4 +- server/db/models/verification_requests.go | 4 +- server/db/providers/sql/env.go | 4 +- server/db/providers/sql/session.go | 3 + server/db/providers/sql/user.go | 2 + .../db/providers/sql/verification_requests.go | 3 + server/email/forgot_password_email.go | 4 +- server/email/verification_email.go | 4 +- server/env/env.go | 9 +-- server/go.mod | 1 - server/go.sum | 4 -- server/graph/generated/generated.go | 52 ------------------ server/graph/model/models_gen.go | 2 - server/graph/schema.graphqls | 2 - server/handlers/app.go | 6 +- server/handlers/oauth_callback.go | 5 ++ server/handlers/oauth_login.go | 8 +-- server/middlewares/context.go | 9 --- server/oauth/oauth.go | 6 +- server/resolvers/env.go | 2 - server/resolvers/forgot_password.go | 6 +- server/resolvers/magic_link_login.go | 9 ++- server/resolvers/resend_verify_email.go | 9 ++- server/resolvers/signup.go | 5 +- server/resolvers/update_env.go | 4 ++ server/resolvers/update_profile.go | 5 +- server/resolvers/update_user.go | 7 ++- server/routes/routes.go | 7 ++- server/test/admin_signup_test.go | 5 +- server/test/env_file_test.go | 3 - server/test/resolvers_test.go | 9 +-- server/test/test.go | 9 ++- server/test/update_user_test.go | 2 +- server/test/urls_test.go | 8 +-- server/token/admin_token.go | 3 +- server/token/verification_token.go | 4 +- server/utils/common.go | 13 +++++ server/utils/urls.go | 13 +++++ templates/app.tmpl | 4 ++ templates/dashboard.tmpl | 4 ++ 60 files changed, 156 insertions(+), 148 deletions(-) create mode 100644 app/favicon_io/android-chrome-192x192.png create mode 100644 app/favicon_io/android-chrome-512x512.png create mode 100644 app/favicon_io/apple-touch-icon.png create mode 100644 app/favicon_io/favicon-16x16.png create mode 100644 app/favicon_io/favicon-32x32.png create mode 100644 app/favicon_io/favicon.ico create mode 100644 dashboard/favicon_io/android-chrome-192x192.png create mode 100644 dashboard/favicon_io/android-chrome-512x512.png create mode 100644 dashboard/favicon_io/apple-touch-icon.png create mode 100644 dashboard/favicon_io/favicon-16x16.png create mode 100644 dashboard/favicon_io/favicon-32x32.png create mode 100644 dashboard/favicon_io/favicon.ico diff --git a/app/favicon_io/android-chrome-192x192.png b/app/favicon_io/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..6da10920e28295dcc8b1f4745db6e3a59f3a9b39 GIT binary patch literal 16538 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%0AW*(0t(9il| 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 NgQu&X%Q~loCIDF!TE+kX literal 0 HcmV?d00001 diff --git a/app/favicon_io/android-chrome-512x512.png b/app/favicon_io/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..a78570671a1268d77a66090c5a2e239dafd57f3c GIT binary patch literal 78580 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%0D2t4N9%RM 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 literal 0 HcmV?d00001 diff --git a/app/favicon_io/apple-touch-icon.png b/app/favicon_io/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6958a31011b7577da6e658cc953ae2d38304e141 GIT binary patch literal 14869 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 Hu0mjfVv=PF literal 0 HcmV?d00001 diff --git a/app/favicon_io/favicon-16x16.png b/app/favicon_io/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..86e472ffdf63774e58840d2c7f43cfcf7b0e6f52 GIT binary patch literal 528 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%0AW*(0t(9il| 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 NgQu&X%Q~loCIDF!TE+kX literal 0 HcmV?d00001 diff --git a/dashboard/favicon_io/android-chrome-512x512.png b/dashboard/favicon_io/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..a78570671a1268d77a66090c5a2e239dafd57f3c GIT binary patch literal 78580 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%0D2t4N9%RM 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 literal 0 HcmV?d00001 diff --git a/dashboard/favicon_io/apple-touch-icon.png b/dashboard/favicon_io/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6958a31011b7577da6e658cc953ae2d38304e141 GIT binary patch literal 14869 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 Hu0mjfVv=PF literal 0 HcmV?d00001 diff --git a/dashboard/favicon_io/favicon-16x16.png b/dashboard/favicon_io/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..86e472ffdf63774e58840d2c7f43cfcf7b0e6f52 GIT binary patch literal 528 zcmV+r0`L8aP)Px$%1J~)R5(wSlg~?3Q5?n3d2gPmGZIp?Xi>T_5FvyRYNmzRCNTU5+=*%1aP2UR zZgZP9VEqlzuayaj1tB=D)E0>lk`aN*noJNI(FL}aD& z}JEW61}k^OYr1Q~%W*hzJ(eW;>>MFJHbbT3-MqqJW`Z z8%I@P=fK3V8Px(Hc3Q5R9HvNS6xgTRTTcdJG09_RSM#RU^LOBO_WNDwA(EfZJMY^YD|q9s}I^X z@#jH}ZHh=H3qo4c#F#X(g2q^58lRd%)1*c%KT;`5DKAZozb!9RzzXalyE}8t?6SxL z%gzu?oX5H6eCIpo+;i`D35Q?RTcMIj7W_)&A&_Na$(EOAnfgx&(ijdloMcAuF9?t8R`}iXM*iqh7)uh^5(wU>kskIvv->E&Mc+a>`P`$%JX5`a2_MfPl~!2z^NMMK{4SbfRgu7h{ux z!yRF`Erb9kdf(1|j(%gjRJ6>CE)JO(PygK-?kZL&&L=**5XJDg+bUp0BP!?%Og~G? z2{+m63OHEf#m8L{loTjzC{<|fj6htLfy6WP1%j<^%YV;p8miZ8c>i1&9u26g&A_oQ zBN&}>TLt-uzQ*7W1k0UPz~1?9KH|m6z9@bljR$;iy^dS*h?9L0r!a9l;(Kmw4B7Ko z=+yI$B8A-*I*y(V!<;R7mWQaT^~V0)2s!VAh>X+M7_w(^`CD<8ot^zlJG|(+Vq$36 zOyc}#nI1zqGZ=N6i#<7(O~53eoOs>3Mq%%E51QL&U@mC)&Dq534|~zv9>#RoSrsIH z1_Z}Q7C0gByx)VLuUqK(F**B$?^Bf?T%QnpeZ_GVM(sV&4`5R|0)@H6t2@1T=X4n1 z=+YS$<`J*#ux(}#S(;-~7=a9MYh$nt;0x&p?AoYfCIXxtN}Zjp&FmIk`prWBuMQYc z+URczJuQOImm`pqK{P$#MQdjiQ-3et-;x5NdYy)rj_{&=vM`1S_pqudRALJ3Hl);h zx35)re3Oo-lcen11;8g=5lqc2OE!KK$8N*M(5D3Uq-(>fu9I!w)@SaE5!h@5%QX$( ztWc14FgjG9Vp8vmOd7_N7^8EPfDP-xl1pDX9@kFeYw_r@B zQ$Ik(eQw3-zxzQZ1Z>qb^Kf@vT!t_F(mqao2;K{&y-dnuE_CAvfpawFy>4U=uIO=^ z%v9(%{w%RnRuy4AAVfLAQUTV&KKMj#Q1KUtTqgOI0(!dYv#&XsjDG;X*p)L&=iDOz O0000vHUmJ_vfH9bY8PmptZFti`c}XRpCEgU+?b5m(M9O?X$Z-v_;uPRT3q z#W_b?@l{cHWt%WM6JxIY%UeaZW!4y4$Y=7_IiLTHeXSy!ZY+&$Z4$gx>Kz*ZESfq^?!YCv4(i;o;B1zWK+luz_d6)@SO1 zjd#$ymWpq*_0Q7%aQf?N16Y%IdEr2vBd$)}w{fuVq=|g7^vag6@(y*4`f87>*PVW5 zGOi|E^iQ??1eSRJA@#GM@t#al-IPfw$H9w>(6bR-CTROtHmx4bq}0vXbbM|$J@YfQ zz_aIyMC`-E31tf4(vMv5;=jv#jE(QeBpPqz8uof&?t_VjYqHDLl~{YgWqmK*9rGUi z_z(EAdZ@J#olOf+5N#DO|WJsEe{MV$0xe1+34GKuLoTDt1) z&&L6;0ot|A1JJ%>9AJ#G#q#yxhd0r$(O2P{uW!-U-z^G9elH5IKVALmeMS^|pBCE6 zuld54FbSLf(o0v0@3ob)g?a9X$Zh$lU=HDTF{db;cpf>;%xdt3^yl>1Rp9fxac~uK zowWa&>A1+hx?M272U)Y2A07=dR(tqc!hGump|yR*b8YPrj5+xykwsn>WKG5~8M^|| z&-L;>8%6HfC7x^N53Li%?gu@;yWqqaYP!64T|-~{9bvxtM_1WuYwi^0sh5Pd;x^a0 z?l5HhMhp*V_sD&z+qtbjuYh6fZME{_pliu-l6LSQAbgC|AHPQwjz5R|x1`@%`)wBO zYrau|m*3iyeKD5_K94+jW3SL3yL)tw@rMTmW$y>e^&4|0E4K+XH@9`3DD*vR&4I3) zCl3i7_TdV{hqv(go9P3>&f|WmaN?lQ*4-s?Pdy;=uWW}ruqW|><@yc2k9j4&`TAeC zxwOOlpEpAm`-J}J_rt>`O!!~MfG9H1+HMhM|6x)1>psAaKs#cd9sd{$L1XAV)7ZTX zd$}Klrk$~#G2e#IT!1-&8=rmOIrqY$WUs7t<{!jE=G%45dA;$D_YF0>=i|k^yZ*Va z%^T#O)$;I(%)f1Yka>72-sjE3;Qm^!0l9kR-8RhfJ7vV2xW>G6fO=h?Z==OX&4`Mfw>Lsx?In_U{!mc{S|Y?8FT5gT|Jy=`m~X5oSIE4b0EW3T-|zFJq_6nLY|c22xK^b?`N?$ zIhakx+vM1^dXs3GcAZ#z$5meIkH>pi^J#DRq>)yqBfc#`-DeN>=4XIYW>oKzN@eVk z@2t8IYFopg=@jVf1bvINR<%(ircC16n@L;MAH@8vZ>bt-=*MPKQ7ey%W)EyIfg79HP)564O4RC)I^mCro@Q)9)H}Dy?47lZ^|BOBfnRv&22Ayj%2v z^~I}FXWZAP|3z*_8iLA!I!C!lzFYp=eeIw))H;qhNI59;X^Vbxpv}{65ND|G6N`5_ zeApoUNRN+SqTizJ19#7!%mmT}|Dkkg%Vu8hCIiL|`1NMsH#C7bR+IT4V-Vx0lLp3Z zqYZso#E;7ucS#%LCvyO2uJLc=9*p0h?Na*qYP@#+UX1-6?;{7ZWx)IieDA;9d2i## z+>7}m@n`-zoKzO$8}levnk(POQD^&s$f3T*8e8P6^VcG`t66BPZVw2zh@Z?G<4cG; zb8suS30|*dT`2d|LLmm;6C?e-qHwGWS7*2jwZ@V6PNV+c=W$lRmzT(S<6WZV*6Xkz zy@|PaC69gQqmMBgHLm^g?1YB;D$h}by4Kz$Yu56-K$LnB_8j)U2{tht7Jn&&-#sAf z!}_Ch!pXlVKl9X!vhExnw&ZOl+oH^Y&uO#vP5%6LgTcNAWnk>VS(7k4L|vTvmhagl zvhBBqq}|37{eA3LVao@BfAC&`)5cq83FE*jVV?er&{uywARe&&ZS#crw>N~ow>G;o{M4@k&FpuvM{O=~$K<|Jv>jbhk z;8;Jy<~pR*S6nqqqZ>%&lw2UxOXwUtEt~@@}E6_Krmw{1kgSxt+iCmy?4x zRrG~{eEhqb5L*Q0K{yhY?++v(a% z)?pjw+1IUJcYq#x6}}6JGkg#1w>z@`bjq2wiJXGA$zG@vz6N~rhkh%}Gp`B_y<+FL z=>L@w)*~4MqQb~x64ym`??Be_ ztr};2U?8V3_O}W1A8%ogat3Fce^H-xOZL{!J+Hn0L~7w>jH~s2S&~xm9`Mz z%vNxis4=kCz?y@NzpS6|JZl~I@EXp4eE<5uFY_Z-xCSnF}tPvkxxH6hr* zQplk$`2=lFYsHzaDCbAK=@W zm)<(!GKV!EJvHNY)|kujc0P;y8m?r|1$hO|;nco2sPx^ASmAAiw?Hk!Rm*1&#v>Vz! zXt)%;0r+pFi++T*SdLGWXWBgd7JV=1I0xR;-M=#S%lL^H#2!me6+aV&4#o|}KG`df zvD!ZK5YnfVY=wJ}OwnI=$i75bZzT$zesdVNnR^s_28$q%PUhm^9crkoVWXDkwx5>o ztn(YtL*je}c`thU$`a;}%)!cY0zW+J@l7nS>hIh~So=7&4gYaQM((S5Zj!xES>q_y a%DUx#6?Iqcn Email Created At + Signup Methods + Roles Verified Actions @@ -177,7 +180,11 @@ export default function Users() { return ( {user.email} - {dayjs(user.created_at).format('MMM DD, YYYY')} + + {dayjs(user.created_at * 1000).format('MMM DD, YYYY')} + + {user.signup_methods} + {user.roles.join(', ')} { } else if ( _.isEqual(obj1[key], obj2[key]) || (obj1[key] === null && obj2[key] === '') || - (obj1[key] === [] && obj2[key] === null) + (obj1[key] && + Array.isArray(obj1[key]) && + obj1[key].length === 0 && + obj2[key] === null) ) { const resultKeyIndex = result.indexOf(key); result.splice(resultKeyIndex, 1); diff --git a/server/constants/env.go b/server/constants/env.go index 8c71105..f36f278 100644 --- a/server/constants/env.go +++ b/server/constants/env.go @@ -16,6 +16,7 @@ const ( // EnvKeyVersion key for build arg version EnvKeyVersion = "VERSION" // EnvKeyAuthorizerURL key for env variable AUTHORIZER_URL + // TODO: remove support AUTHORIZER_URL env EnvKeyAuthorizerURL = "AUTHORIZER_URL" // EnvKeyPort key for env variable PORT EnvKeyPort = "PORT" diff --git a/server/cookie/admin_cookie.go b/server/cookie/admin_cookie.go index 55917a7..4c6bc26 100644 --- a/server/cookie/admin_cookie.go +++ b/server/cookie/admin_cookie.go @@ -13,7 +13,8 @@ import ( func SetAdminCookie(gc *gin.Context, token string) { secure := true httpOnly := true - host, _ := utils.GetHostParts(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)) + hostname := utils.GetHost(gc) + host, _ := utils.GetHostParts(hostname) gc.SetCookie(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminCookieName), token, 3600, "/", host, secure, httpOnly) } @@ -38,7 +39,8 @@ func GetAdminCookie(gc *gin.Context) (string, error) { func DeleteAdminCookie(gc *gin.Context) { secure := true httpOnly := true - host, _ := utils.GetHostParts(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)) + hostname := utils.GetHost(gc) + host, _ := utils.GetHostParts(hostname) gc.SetCookie(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminCookieName), "", -1, "/", host, secure, httpOnly) } diff --git a/server/cookie/cookie.go b/server/cookie/cookie.go index 10ea56c..7a59bae 100644 --- a/server/cookie/cookie.go +++ b/server/cookie/cookie.go @@ -19,8 +19,9 @@ import ( func SetCookie(gc *gin.Context, accessToken, refreshToken, fingerprintHash string) { secure := true httpOnly := true - host, _ := utils.GetHostParts(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)) - domain := utils.GetDomainName(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)) + hostname := utils.GetHost(gc) + host, _ := utils.GetHostParts(hostname) + domain := utils.GetDomainName(hostname) if domain != "localhost" { domain = "." + domain } @@ -86,9 +87,9 @@ func GetFingerPrintCookie(gc *gin.Context) (string, error) { func DeleteCookie(gc *gin.Context) { secure := true httpOnly := true - - host, _ := utils.GetHostParts(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)) - domain := utils.GetDomainName(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)) + hostname := utils.GetHost(gc) + host, _ := utils.GetHostParts(hostname) + domain := utils.GetDomainName(hostname) if domain != "localhost" { domain = "." + domain } diff --git a/server/db/models/env.go b/server/db/models/env.go index f98792c..16a250b 100644 --- a/server/db/models/env.go +++ b/server/db/models/env.go @@ -6,6 +6,6 @@ type Env struct { ID string `gorm:"primaryKey;type:char(36)" json:"_id" bson:"_id"` EnvData string `gorm:"type:text" json:"env" bson:"env"` Hash string `gorm:"type:text" json:"hash" bson:"hash"` - UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"` - CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"` + UpdatedAt int64 `json:"updated_at" bson:"updated_at"` + CreatedAt int64 `json:"created_at" bson:"created_at"` } diff --git a/server/db/models/session.go b/server/db/models/session.go index c989e8b..0f668ae 100644 --- a/server/db/models/session.go +++ b/server/db/models/session.go @@ -8,6 +8,6 @@ type Session struct { User User `json:"-" bson:"-"` UserAgent string `json:"user_agent" bson:"user_agent"` IP string `json:"ip" bson:"ip"` - CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"` - UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"` + CreatedAt int64 `json:"created_at" bson:"created_at"` + UpdatedAt int64 `json:"updated_at" bson:"updated_at"` } diff --git a/server/db/models/user.go b/server/db/models/user.go index ff6247c..aa51771 100644 --- a/server/db/models/user.go +++ b/server/db/models/user.go @@ -25,8 +25,8 @@ type User struct { PhoneNumberVerifiedAt *int64 `json:"phone_number_verified_at" bson:"phone_number_verified_at"` Picture *string `gorm:"type:text" json:"picture" bson:"picture"` Roles string `json:"roles" bson:"roles"` - UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"` - CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"` + UpdatedAt int64 `json:"updated_at" bson:"updated_at"` + CreatedAt int64 `json:"created_at" bson:"created_at"` } func (user *User) AsAPIUser() *model.User { diff --git a/server/db/models/verification_requests.go b/server/db/models/verification_requests.go index 29da0f0..5c23301 100644 --- a/server/db/models/verification_requests.go +++ b/server/db/models/verification_requests.go @@ -9,8 +9,8 @@ type VerificationRequest struct { Token string `gorm:"type:text" json:"token" bson:"token"` Identifier string `gorm:"uniqueIndex:idx_email_identifier" json:"identifier" bson:"identifier"` ExpiresAt int64 `json:"expires_at" bson:"expires_at"` - CreatedAt int64 `gorm:"autoCreateTime" json:"created_at" bson:"created_at"` - UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at" bson:"updated_at"` + CreatedAt int64 `json:"created_at" bson:"created_at"` + UpdatedAt int64 `json:"updated_at" bson:"updated_at"` Email string `gorm:"uniqueIndex:idx_email_identifier" json:"email" bson:"email"` } diff --git a/server/db/providers/sql/env.go b/server/db/providers/sql/env.go index 489fa8d..9df14ae 100644 --- a/server/db/providers/sql/env.go +++ b/server/db/providers/sql/env.go @@ -15,8 +15,10 @@ func (p *provider) AddEnv(env models.Env) (models.Env, error) { } env.Key = env.ID - result := p.db.Create(&env) + env.CreatedAt = time.Now().Unix() + env.UpdatedAt = time.Now().Unix() + result := p.db.Create(&env) if result.Error != nil { log.Println("error adding config:", result.Error) return env, result.Error diff --git a/server/db/providers/sql/session.go b/server/db/providers/sql/session.go index 28230b5..8184558 100644 --- a/server/db/providers/sql/session.go +++ b/server/db/providers/sql/session.go @@ -2,6 +2,7 @@ package sql import ( "log" + "time" "github.com/authorizerdev/authorizer/server/db/models" "github.com/google/uuid" @@ -15,6 +16,8 @@ func (p *provider) AddSession(session models.Session) error { } session.Key = session.ID + session.CreatedAt = time.Now().Unix() + session.UpdatedAt = time.Now().Unix() res := p.db.Clauses( clause.OnConflict{ DoNothing: true, diff --git a/server/db/providers/sql/user.go b/server/db/providers/sql/user.go index 85c1d54..0a881dd 100644 --- a/server/db/providers/sql/user.go +++ b/server/db/providers/sql/user.go @@ -23,6 +23,8 @@ func (p *provider) AddUser(user models.User) (models.User, error) { user.Roles = strings.Join(envstore.EnvInMemoryStoreObj.GetSliceStoreEnvVariable(constants.EnvKeyDefaultRoles), ",") } + user.CreatedAt = time.Now().Unix() + user.UpdatedAt = time.Now().Unix() user.Key = user.ID result := p.db.Clauses( clause.OnConflict{ diff --git a/server/db/providers/sql/verification_requests.go b/server/db/providers/sql/verification_requests.go index ba1d73b..7e7e7ba 100644 --- a/server/db/providers/sql/verification_requests.go +++ b/server/db/providers/sql/verification_requests.go @@ -2,6 +2,7 @@ package sql import ( "log" + "time" "github.com/authorizerdev/authorizer/server/db/models" "github.com/authorizerdev/authorizer/server/graph/model" @@ -16,6 +17,8 @@ func (p *provider) AddVerificationRequest(verificationRequest models.Verificatio } verificationRequest.Key = verificationRequest.ID + verificationRequest.CreatedAt = time.Now().Unix() + verificationRequest.UpdatedAt = time.Now().Unix() result := p.db.Clauses(clause.OnConflict{ Columns: []clause.Column{{Name: "email"}, {Name: "identifier"}}, DoUpdates: clause.AssignmentColumns([]string{"token", "expires_at"}), diff --git a/server/email/forgot_password_email.go b/server/email/forgot_password_email.go index 4c00feb..ddc3c12 100644 --- a/server/email/forgot_password_email.go +++ b/server/email/forgot_password_email.go @@ -6,10 +6,10 @@ import ( ) // SendForgotPasswordMail to send forgot password email -func SendForgotPasswordMail(toEmail, token, host string) error { +func SendForgotPasswordMail(toEmail, token, hostname string) error { resetPasswordUrl := envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyResetPasswordURL) if resetPasswordUrl == "" { - envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyResetPasswordURL, envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL)+"/app/reset-password") + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyResetPasswordURL, hostname+"/app/reset-password") } // The receiver needs to be in slice as the receive supports multiple receiver diff --git a/server/email/verification_email.go b/server/email/verification_email.go index 54cfa11..27fff46 100644 --- a/server/email/verification_email.go +++ b/server/email/verification_email.go @@ -6,7 +6,7 @@ import ( ) // SendVerificationMail to send verification email -func SendVerificationMail(toEmail, token string) error { +func SendVerificationMail(toEmail, token, hostname string) error { // The receiver needs to be in slice as the receive supports multiple receiver Receiver := []string{toEmail} @@ -99,7 +99,7 @@ func SendVerificationMail(toEmail, token string) error { data := make(map[string]interface{}, 3) data["org_logo"] = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyOrganizationLogo) data["org_name"] = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyOrganizationName) - data["verification_url"] = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/verify_email?token=" + token + data["verification_url"] = hostname + "/verify_email?token=" + token message = addEmailTemplate(message, data, "verify_email.tmpl") // bodyMessage := sender.WriteHTMLEmail(Receiver, Subject, message) diff --git a/server/env/env.go b/server/env/env.go index de7da02..1548c3a 100644 --- a/server/env/env.go +++ b/server/env/env.go @@ -31,8 +31,6 @@ func InitEnv() { } } - // set authorizer url to empty string so that fresh url is obtained with every server start - envData.StringEnv[constants.EnvKeyAuthorizerURL] = "" if envData.StringEnv[constants.EnvKeyAppURL] == "" { envData.StringEnv[constants.EnvKeyAppURL] = os.Getenv(constants.EnvKeyAppURL) } @@ -246,10 +244,9 @@ func InitEnv() { trimVal := strings.TrimSpace(val) if trimVal != "" { roles = append(roles, trimVal) - } - - if utils.StringSliceContains(defaultRoleSplit, trimVal) { - defaultRoles = append(defaultRoles, trimVal) + if utils.StringSliceContains(defaultRoleSplit, trimVal) { + defaultRoles = append(defaultRoles, trimVal) + } } } diff --git a/server/go.mod b/server/go.mod index 0ca8653..e470a65 100644 --- a/server/go.mod +++ b/server/go.mod @@ -6,7 +6,6 @@ require ( github.com/99designs/gqlgen v0.14.0 github.com/arangodb/go-driver v1.2.1 github.com/coreos/go-oidc/v3 v3.1.0 - github.com/gin-contrib/location v0.0.2 github.com/gin-gonic/gin v1.7.2 github.com/go-playground/validator/v10 v10.8.0 // indirect github.com/go-redis/redis/v8 v8.11.0 diff --git a/server/go.sum b/server/go.sum index 5f7a7f4..bcf90b7 100644 --- a/server/go.sum +++ b/server/go.sum @@ -82,11 +82,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/gin-contrib/location v0.0.2 h1:QZKh1+K/LLR4KG/61eIO3b7MLuKi8tytQhV6texLgP4= -github.com/gin-contrib/location v0.0.2/go.mod h1:NGoidiRlf0BlA/VKSVp+g3cuSMeTmip/63PhEjRhUAc= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= github.com/gin-gonic/gin v1.7.2 h1:Tg03T9yM2xa8j6I3Z3oqLaQRSmKvxPd6g/2HJ6zICFA= github.com/gin-gonic/gin v1.7.2/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -100,7 +97,6 @@ github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8c github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-playground/validator/v10 v10.8.0 h1:1kAa0fCrnpv+QYdkdcRzrRM7AyYs5o8+jZdJCz9xj6k= github.com/go-playground/validator/v10 v10.8.0/go.mod h1:9JhgTzTaE31GZDpH/HSvHiRJrJ3iKAgqqH0Bl/Ocjdk= diff --git a/server/graph/generated/generated.go b/server/graph/generated/generated.go index e159ec6..f5979c4 100644 --- a/server/graph/generated/generated.go +++ b/server/graph/generated/generated.go @@ -54,7 +54,6 @@ type ComplexityRoot struct { AdminSecret func(childComplexity int) int AllowedOrigins func(childComplexity int) int AppURL func(childComplexity int) int - AuthorizerURL func(childComplexity int) int CookieName func(childComplexity int) int CustomAccessTokenScript func(childComplexity int) int DatabaseName func(childComplexity int) int @@ -280,13 +279,6 @@ func (e *executableSchema) Complexity(typeName, field string, childComplexity in return e.complexity.Env.AppURL(childComplexity), true - case "Env.AUTHORIZER_URL": - if e.complexity.Env.AuthorizerURL == nil { - break - } - - return e.complexity.Env.AuthorizerURL(childComplexity), true - case "Env.COOKIE_NAME": if e.complexity.Env.CookieName == nil { break @@ -1215,7 +1207,6 @@ type Env { JWT_TYPE: String JWT_SECRET: String ALLOWED_ORIGINS: [String!] - AUTHORIZER_URL: String APP_URL: String REDIS_URL: String COOKIE_NAME: String @@ -1250,7 +1241,6 @@ input UpdateEnvInput { JWT_TYPE: String JWT_SECRET: String ALLOWED_ORIGINS: [String!] - AUTHORIZER_URL: String APP_URL: String REDIS_URL: String COOKIE_NAME: String @@ -2271,38 +2261,6 @@ func (ec *executionContext) _Env_ALLOWED_ORIGINS(ctx context.Context, field grap return ec.marshalOString2ᚕstringᚄ(ctx, field.Selections, res) } -func (ec *executionContext) _Env_AUTHORIZER_URL(ctx context.Context, field graphql.CollectedField, obj *model.Env) (ret graphql.Marshaler) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null - } - }() - fc := &graphql.FieldContext{ - Object: "Env", - Field: field, - Args: nil, - IsMethod: false, - IsResolver: false, - } - - ctx = graphql.WithFieldContext(ctx, fc) - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (interface{}, error) { - ctx = rctx // use context from middleware stack in children - return obj.AuthorizerURL, nil - }) - if err != nil { - ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - return graphql.Null - } - res := resTmp.(*string) - fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) -} - func (ec *executionContext) _Env_APP_URL(ctx context.Context, field graphql.CollectedField, obj *model.Env) (ret graphql.Marshaler) { defer func() { if r := recover(); r != nil { @@ -7094,14 +7052,6 @@ func (ec *executionContext) unmarshalInputUpdateEnvInput(ctx context.Context, ob if err != nil { return it, err } - case "AUTHORIZER_URL": - var err error - - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("AUTHORIZER_URL")) - it.AuthorizerURL, err = ec.unmarshalOString2ᚖstring(ctx, v) - if err != nil { - return it, err - } case "APP_URL": var err error @@ -7591,8 +7541,6 @@ func (ec *executionContext) _Env(ctx context.Context, sel ast.SelectionSet, obj out.Values[i] = ec._Env_JWT_SECRET(ctx, field, obj) case "ALLOWED_ORIGINS": out.Values[i] = ec._Env_ALLOWED_ORIGINS(ctx, field, obj) - case "AUTHORIZER_URL": - out.Values[i] = ec._Env_AUTHORIZER_URL(ctx, field, obj) case "APP_URL": out.Values[i] = ec._Env_APP_URL(ctx, field, obj) case "REDIS_URL": diff --git a/server/graph/model/models_gen.go b/server/graph/model/models_gen.go index 0350d2a..5533a70 100644 --- a/server/graph/model/models_gen.go +++ b/server/graph/model/models_gen.go @@ -35,7 +35,6 @@ type Env struct { JwtType *string `json:"JWT_TYPE"` JwtSecret *string `json:"JWT_SECRET"` AllowedOrigins []string `json:"ALLOWED_ORIGINS"` - AuthorizerURL *string `json:"AUTHORIZER_URL"` AppURL *string `json:"APP_URL"` RedisURL *string `json:"REDIS_URL"` CookieName *string `json:"COOKIE_NAME"` @@ -155,7 +154,6 @@ type UpdateEnvInput struct { JwtType *string `json:"JWT_TYPE"` JwtSecret *string `json:"JWT_SECRET"` AllowedOrigins []string `json:"ALLOWED_ORIGINS"` - AuthorizerURL *string `json:"AUTHORIZER_URL"` AppURL *string `json:"APP_URL"` RedisURL *string `json:"REDIS_URL"` CookieName *string `json:"COOKIE_NAME"` diff --git a/server/graph/schema.graphqls b/server/graph/schema.graphqls index abb7979..1bbd2f8 100644 --- a/server/graph/schema.graphqls +++ b/server/graph/schema.graphqls @@ -98,7 +98,6 @@ type Env { JWT_TYPE: String JWT_SECRET: String ALLOWED_ORIGINS: [String!] - AUTHORIZER_URL: String APP_URL: String REDIS_URL: String COOKIE_NAME: String @@ -133,7 +132,6 @@ input UpdateEnvInput { JWT_TYPE: String JWT_SECRET: String ALLOWED_ORIGINS: [String!] - AUTHORIZER_URL: String APP_URL: String REDIS_URL: String COOKIE_NAME: String diff --git a/server/handlers/app.go b/server/handlers/app.go index 9fc723c..ef893ff 100644 --- a/server/handlers/app.go +++ b/server/handlers/app.go @@ -22,6 +22,7 @@ type State struct { // AppHandler is the handler for the /app route func AppHandler() gin.HandlerFunc { return func(c *gin.Context) { + hostname := utils.GetHost(c) if envstore.EnvInMemoryStoreObj.GetBoolStoreEnvVariable(constants.EnvKeyDisableLoginPage) { c.JSON(400, gin.H{"error": "login page is not enabled"}) return @@ -32,7 +33,8 @@ func AppHandler() gin.HandlerFunc { var stateObj State if state == "" { - stateObj.AuthorizerURL = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + + stateObj.AuthorizerURL = hostname stateObj.RedirectURL = stateObj.AuthorizerURL + "/app" } else { @@ -62,7 +64,7 @@ func AppHandler() gin.HandlerFunc { } // validate host and domain of authorizer url - if strings.TrimSuffix(stateObj.AuthorizerURL, "/") != envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) { + if strings.TrimSuffix(stateObj.AuthorizerURL, "/") != hostname { c.JSON(400, gin.H{"error": "invalid host url"}) return } diff --git a/server/handlers/oauth_callback.go b/server/handlers/oauth_callback.go index 4a0ffc8..b490c6b 100644 --- a/server/handlers/oauth_callback.go +++ b/server/handlers/oauth_callback.go @@ -99,6 +99,11 @@ func OAuthCallbackHandler() gin.HandlerFunc { user.SignupMethods = signupMethod user.Password = existingUser.Password + if user.EmailVerifiedAt == nil { + now := time.Now().Unix() + user.EmailVerifiedAt = &now + } + // There multiple scenarios with roles here in social login // 1. user has access to protected roles + roles and trying to login // 2. user has not signed up for one of the available role but trying to signup. diff --git a/server/handlers/oauth_login.go b/server/handlers/oauth_login.go index 1ae3eea..f23547e 100644 --- a/server/handlers/oauth_login.go +++ b/server/handlers/oauth_login.go @@ -16,7 +16,7 @@ import ( // OAuthLoginHandler set host in the oauth state that is useful for redirecting to oauth_callback func OAuthLoginHandler() gin.HandlerFunc { return func(c *gin.Context) { - // TODO validate redirect URL + hostname := utils.GetHost(c) redirectURL := c.Query("redirectURL") roles := c.Query("roles") @@ -56,7 +56,7 @@ func OAuthLoginHandler() gin.HandlerFunc { } sessionstore.SetSocailLoginState(oauthStateString, constants.SignupMethodGoogle) // during the init of OAuthProvider authorizer url might be empty - oauth.OAuthProviders.GoogleConfig.RedirectURL = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/oauth_callback/google" + oauth.OAuthProviders.GoogleConfig.RedirectURL = hostname + "/oauth_callback/google" url := oauth.OAuthProviders.GoogleConfig.AuthCodeURL(oauthStateString) c.Redirect(http.StatusTemporaryRedirect, url) case constants.SignupMethodGithub: @@ -65,7 +65,7 @@ func OAuthLoginHandler() gin.HandlerFunc { break } sessionstore.SetSocailLoginState(oauthStateString, constants.SignupMethodGithub) - oauth.OAuthProviders.GithubConfig.RedirectURL = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/oauth_callback/github" + oauth.OAuthProviders.GithubConfig.RedirectURL = hostname + "/oauth_callback/github" url := oauth.OAuthProviders.GithubConfig.AuthCodeURL(oauthStateString) c.Redirect(http.StatusTemporaryRedirect, url) case constants.SignupMethodFacebook: @@ -74,7 +74,7 @@ func OAuthLoginHandler() gin.HandlerFunc { break } sessionstore.SetSocailLoginState(oauthStateString, constants.SignupMethodFacebook) - oauth.OAuthProviders.FacebookConfig.RedirectURL = envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/oauth_callback/facebook" + oauth.OAuthProviders.FacebookConfig.RedirectURL = hostname + "/oauth_callback/facebook" url := oauth.OAuthProviders.FacebookConfig.AuthCodeURL(oauthStateString) c.Redirect(http.StatusTemporaryRedirect, url) default: diff --git a/server/middlewares/context.go b/server/middlewares/context.go index 6592e7b..8da697d 100644 --- a/server/middlewares/context.go +++ b/server/middlewares/context.go @@ -2,22 +2,13 @@ package middlewares import ( "context" - "log" - "github.com/authorizerdev/authorizer/server/constants" - "github.com/authorizerdev/authorizer/server/envstore" - "github.com/gin-contrib/location" "github.com/gin-gonic/gin" ) // GinContextToContextMiddleware is a middleware to add gin context in context func GinContextToContextMiddleware() gin.HandlerFunc { return func(c *gin.Context) { - if envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) == "" { - url := location.Get(c) - log.Println("=> setting authorizer url to: " + url.Scheme + "://" + c.Request.Host) - envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyAuthorizerURL, url.Scheme+"://"+c.Request.Host) - } ctx := context.WithValue(c.Request.Context(), "GinContextKey", c) c.Request = c.Request.WithContext(ctx) c.Next() diff --git a/server/oauth/oauth.go b/server/oauth/oauth.go index 317be78..c0ff694 100644 --- a/server/oauth/oauth.go +++ b/server/oauth/oauth.go @@ -43,7 +43,7 @@ func InitOAuth() { OAuthProviders.GoogleConfig = &oauth2.Config{ ClientID: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyGoogleClientID), ClientSecret: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyGoogleClientSecret), - RedirectURL: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/oauth_callback/google", + RedirectURL: "/oauth_callback/google", Endpoint: OIDCProviders.GoogleOIDC.Endpoint(), Scopes: []string{oidc.ScopeOpenID, "profile", "email"}, } @@ -52,7 +52,7 @@ func InitOAuth() { OAuthProviders.GithubConfig = &oauth2.Config{ ClientID: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyGithubClientID), ClientSecret: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyGithubClientSecret), - RedirectURL: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/oauth_callback/github", + RedirectURL: "/oauth_callback/github", Endpoint: githubOAuth2.Endpoint, } } @@ -60,7 +60,7 @@ func InitOAuth() { OAuthProviders.FacebookConfig = &oauth2.Config{ ClientID: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyFacebookClientID), ClientSecret: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyFacebookClientSecret), - RedirectURL: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL) + "/oauth_callback/facebook", + RedirectURL: "/oauth_callback/facebook", Endpoint: facebookOAuth2.Endpoint, Scopes: []string{"public_profile", "email"}, } diff --git a/server/resolvers/env.go b/server/resolvers/env.go index de7d0d5..d514ef3 100644 --- a/server/resolvers/env.go +++ b/server/resolvers/env.go @@ -41,7 +41,6 @@ func EnvResolver(ctx context.Context) (*model.Env, error) { jwtSecret := store.StringEnv[constants.EnvKeyJwtSecret] jwtRoleClaim := store.StringEnv[constants.EnvKeyJwtRoleClaim] allowedOrigins := store.SliceEnv[constants.EnvKeyAllowedOrigins] - authorizerURL := store.StringEnv[constants.EnvKeyAuthorizerURL] appURL := store.StringEnv[constants.EnvKeyAppURL] redisURL := store.StringEnv[constants.EnvKeyRedisURL] cookieName := store.StringEnv[constants.EnvKeyCookieName] @@ -77,7 +76,6 @@ func EnvResolver(ctx context.Context) (*model.Env, error) { JwtSecret: &jwtSecret, JwtRoleClaim: &jwtRoleClaim, AllowedOrigins: allowedOrigins, - AuthorizerURL: &authorizerURL, AppURL: &appURL, RedisURL: &redisURL, CookieName: &cookieName, diff --git a/server/resolvers/forgot_password.go b/server/resolvers/forgot_password.go index 8e7719d..fd53320 100644 --- a/server/resolvers/forgot_password.go +++ b/server/resolvers/forgot_password.go @@ -27,7 +27,6 @@ func ForgotPasswordResolver(ctx context.Context, params model.ForgotPasswordInpu if envstore.EnvInMemoryStoreObj.GetBoolStoreEnvVariable(constants.EnvKeyDisableBasicAuthentication) { return res, fmt.Errorf(`basic authentication is disabled for this instance`) } - host := gc.Request.Host params.Email = strings.ToLower(params.Email) if !utils.IsValidEmail(params.Email) { @@ -39,7 +38,8 @@ func ForgotPasswordResolver(ctx context.Context, params model.ForgotPasswordInpu return res, fmt.Errorf(`user with this email not found`) } - verificationToken, err := token.CreateVerificationToken(params.Email, constants.VerificationTypeForgotPassword) + hostname := utils.GetHost(gc) + verificationToken, err := token.CreateVerificationToken(params.Email, constants.VerificationTypeForgotPassword, hostname) if err != nil { log.Println(`error generating token`, err) } @@ -52,7 +52,7 @@ func ForgotPasswordResolver(ctx context.Context, params model.ForgotPasswordInpu // exec it as go routin so that we can reduce the api latency go func() { - email.SendForgotPasswordMail(params.Email, verificationToken, host) + email.SendForgotPasswordMail(params.Email, verificationToken, hostname) }() res = &model.Response{ diff --git a/server/resolvers/magic_link_login.go b/server/resolvers/magic_link_login.go index 6a0aa26..8455b56 100644 --- a/server/resolvers/magic_link_login.go +++ b/server/resolvers/magic_link_login.go @@ -20,6 +20,10 @@ import ( // MagicLinkLoginResolver is a resolver for magic link login mutation func MagicLinkLoginResolver(ctx context.Context, params model.MagicLinkLoginInput) (*model.Response, error) { var res *model.Response + gc, err := utils.GinContextFromContext(ctx) + if err != nil { + return res, err + } if envstore.EnvInMemoryStoreObj.GetBoolStoreEnvVariable(constants.EnvKeyDisableMagicLinkLogin) { return res, fmt.Errorf(`magic link login is disabled for this instance`) @@ -102,10 +106,11 @@ func MagicLinkLoginResolver(ctx context.Context, params model.MagicLinkLoginInpu } } + hostname := utils.GetHost(gc) if !envstore.EnvInMemoryStoreObj.GetBoolStoreEnvVariable(constants.EnvKeyDisableEmailVerification) { // insert verification request verificationType := constants.VerificationTypeMagicLinkLogin - verificationToken, err := token.CreateVerificationToken(params.Email, verificationType) + verificationToken, err := token.CreateVerificationToken(params.Email, verificationType, hostname) if err != nil { log.Println(`error generating token`, err) } @@ -118,7 +123,7 @@ func MagicLinkLoginResolver(ctx context.Context, params model.MagicLinkLoginInpu // exec it as go routin so that we can reduce the api latency go func() { - email.SendVerificationMail(params.Email, verificationToken) + email.SendVerificationMail(params.Email, verificationToken, hostname) }() } diff --git a/server/resolvers/resend_verify_email.go b/server/resolvers/resend_verify_email.go index b0fb815..214668f 100644 --- a/server/resolvers/resend_verify_email.go +++ b/server/resolvers/resend_verify_email.go @@ -18,6 +18,10 @@ import ( // ResendVerifyEmailResolver is a resolver for resend verify email mutation func ResendVerifyEmailResolver(ctx context.Context, params model.ResendVerifyEmailInput) (*model.Response, error) { var res *model.Response + gc, err := utils.GinContextFromContext(ctx) + if err != nil { + return res, err + } params.Email = strings.ToLower(params.Email) if !utils.IsValidEmail(params.Email) { @@ -39,7 +43,8 @@ func ResendVerifyEmailResolver(ctx context.Context, params model.ResendVerifyEma log.Println("error deleting verification request:", err) } - verificationToken, err := token.CreateVerificationToken(params.Email, params.Identifier) + hostname := utils.GetHost(gc) + verificationToken, err := token.CreateVerificationToken(params.Email, params.Identifier, hostname) if err != nil { log.Println(`error generating token`, err) } @@ -52,7 +57,7 @@ func ResendVerifyEmailResolver(ctx context.Context, params model.ResendVerifyEma // exec it as go routin so that we can reduce the api latency go func() { - email.SendVerificationMail(params.Email, verificationToken) + email.SendVerificationMail(params.Email, verificationToken, hostname) }() res = &model.Response{ diff --git a/server/resolvers/signup.go b/server/resolvers/signup.go index 027d593..adeb20f 100644 --- a/server/resolvers/signup.go +++ b/server/resolvers/signup.go @@ -119,10 +119,11 @@ func SignupResolver(ctx context.Context, params model.SignUpInput) (*model.AuthR roles := strings.Split(user.Roles, ",") userToReturn := user.AsAPIUser() + hostname := utils.GetHost(gc) if !envstore.EnvInMemoryStoreObj.GetBoolStoreEnvVariable(constants.EnvKeyDisableEmailVerification) { // insert verification request verificationType := constants.VerificationTypeBasicAuthSignup - verificationToken, err := token.CreateVerificationToken(params.Email, verificationType) + verificationToken, err := token.CreateVerificationToken(params.Email, verificationType, hostname) if err != nil { log.Println(`error generating token`, err) } @@ -135,7 +136,7 @@ func SignupResolver(ctx context.Context, params model.SignUpInput) (*model.AuthR // exec it as go routin so that we can reduce the api latency go func() { - email.SendVerificationMail(params.Email, verificationToken) + email.SendVerificationMail(params.Email, verificationToken, hostname) }() res = &model.AuthResponse{ diff --git a/server/resolvers/update_env.go b/server/resolvers/update_env.go index 2c56ebf..9791314 100644 --- a/server/resolvers/update_env.go +++ b/server/resolvers/update_env.go @@ -13,6 +13,8 @@ import ( "github.com/authorizerdev/authorizer/server/db" "github.com/authorizerdev/authorizer/server/envstore" "github.com/authorizerdev/authorizer/server/graph/model" + "github.com/authorizerdev/authorizer/server/oauth" + "github.com/authorizerdev/authorizer/server/sessionstore" "github.com/authorizerdev/authorizer/server/token" "github.com/authorizerdev/authorizer/server/utils" ) @@ -115,6 +117,8 @@ func UpdateEnvResolver(ctx context.Context, params model.UpdateEnvInput) (*model // Update local store envstore.EnvInMemoryStoreObj.UpdateEnvStore(updatedData) + sessionstore.InitSession() + oauth.InitOAuth() // Fetch the current db store and update it env, err := db.Provider.GetEnv() diff --git a/server/resolvers/update_profile.go b/server/resolvers/update_profile.go index aca082d..1f19adb 100644 --- a/server/resolvers/update_profile.go +++ b/server/resolvers/update_profile.go @@ -116,12 +116,13 @@ func UpdateProfileResolver(ctx context.Context, params model.UpdateProfileInput) sessionstore.DeleteAllUserSession(fmt.Sprintf("%v", user.ID)) cookie.DeleteCookie(gc) + hostname := utils.GetHost(gc) user.Email = newEmail user.EmailVerifiedAt = nil hasEmailChanged = true // insert verification request verificationType := constants.VerificationTypeUpdateEmail - verificationToken, err := token.CreateVerificationToken(newEmail, verificationType) + verificationToken, err := token.CreateVerificationToken(newEmail, verificationType, hostname) if err != nil { log.Println(`error generating token`, err) } @@ -134,7 +135,7 @@ func UpdateProfileResolver(ctx context.Context, params model.UpdateProfileInput) // exec it as go routin so that we can reduce the api latency go func() { - email.SendVerificationMail(newEmail, verificationToken) + email.SendVerificationMail(newEmail, verificationToken, hostname) }() } diff --git a/server/resolvers/update_user.go b/server/resolvers/update_user.go index bf5adf0..efbd280 100644 --- a/server/resolvers/update_user.go +++ b/server/resolvers/update_user.go @@ -98,11 +98,12 @@ func UpdateUserResolver(ctx context.Context, params model.UpdateUserInput) (*mod sessionstore.DeleteAllUserSession(fmt.Sprintf("%v", user.ID)) cookie.DeleteCookie(gc) + hostname := utils.GetHost(gc) user.Email = newEmail user.EmailVerifiedAt = nil // insert verification request verificationType := constants.VerificationTypeUpdateEmail - verificationToken, err := token.CreateVerificationToken(newEmail, verificationType) + verificationToken, err := token.CreateVerificationToken(newEmail, verificationType, hostname) if err != nil { log.Println(`error generating token`, err) } @@ -115,7 +116,7 @@ func UpdateUserResolver(ctx context.Context, params model.UpdateUserInput) (*mod // exec it as go routin so that we can reduce the api latency go func() { - email.SendVerificationMail(newEmail, verificationToken) + email.SendVerificationMail(newEmail, verificationToken, hostname) }() } @@ -127,7 +128,7 @@ func UpdateUserResolver(ctx context.Context, params model.UpdateUserInput) (*mod inputRoles = append(inputRoles, *item) } - if !utils.IsValidRoles(append([]string{}, append(envstore.EnvInMemoryStoreObj.GetSliceStoreEnvVariable(constants.EnvKeyRoles), envstore.EnvInMemoryStoreObj.GetSliceStoreEnvVariable(constants.EnvKeyProtectedRoles)...)...), inputRoles) { + if !utils.IsValidRoles(inputRoles, append([]string{}, append(envstore.EnvInMemoryStoreObj.GetSliceStoreEnvVariable(constants.EnvKeyRoles), envstore.EnvInMemoryStoreObj.GetSliceStoreEnvVariable(constants.EnvKeyProtectedRoles)...)...)) { return res, fmt.Errorf("invalid list of roles") } diff --git a/server/routes/routes.go b/server/routes/routes.go index 38ecafd..f5b5770 100644 --- a/server/routes/routes.go +++ b/server/routes/routes.go @@ -3,14 +3,13 @@ package routes import ( "github.com/authorizerdev/authorizer/server/handlers" "github.com/authorizerdev/authorizer/server/middlewares" - "github.com/gin-contrib/location" "github.com/gin-gonic/gin" ) // InitRouter initializes gin router func InitRouter() *gin.Engine { router := gin.Default() - router.Use(location.Default()) + // router.Use(location.Default()) router.Use(middlewares.GinContextToContextMiddleware()) router.Use(middlewares.CORSMiddleware()) @@ -25,14 +24,16 @@ func InitRouter() *gin.Engine { // login page app related routes. app := router.Group("/app") { + app.Static("/favicon_io", "app/favicon_io") app.Static("/build", "app/build") app.GET("/", handlers.AppHandler()) - app.GET("/reset-password", handlers.AppHandler()) + app.GET("/:page", handlers.AppHandler()) } // dashboard related routes dashboard := router.Group("/dashboard") { + dashboard.Static("/favicon_io", "dashboard/favicon_io") dashboard.Static("/build", "dashboard/build") dashboard.GET("/", handlers.DashboardHandler()) dashboard.GET("/:page", handlers.DashboardHandler()) diff --git a/server/test/admin_signup_test.go b/server/test/admin_signup_test.go index e48822a..6ef545c 100644 --- a/server/test/admin_signup_test.go +++ b/server/test/admin_signup_test.go @@ -7,13 +7,12 @@ import ( "github.com/authorizerdev/authorizer/server/envstore" "github.com/authorizerdev/authorizer/server/graph/model" "github.com/authorizerdev/authorizer/server/resolvers" - "github.com/google/uuid" "github.com/stretchr/testify/assert" ) func adminSignupTests(t *testing.T, s TestSetup) { t.Helper() - t.Run(`should complete admin login`, func(t *testing.T) { + t.Run(`should complete admin signup`, func(t *testing.T) { _, ctx := createContext(s) _, err := resolvers.AdminSignupResolver(ctx, model.AdminSignupInput{ AdminSecret: "admin", @@ -24,7 +23,7 @@ func adminSignupTests(t *testing.T, s TestSetup) { envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyAdminSecret, "") _, err = resolvers.AdminSignupResolver(ctx, model.AdminSignupInput{ - AdminSecret: uuid.New().String(), + AdminSecret: "admin123", }) assert.Nil(t, err) diff --git a/server/test/env_file_test.go b/server/test/env_file_test.go index 496e79f..8a6a838 100644 --- a/server/test/env_file_test.go +++ b/server/test/env_file_test.go @@ -14,16 +14,13 @@ func TestEnvs(t *testing.T) { env.InitEnv() store := envstore.EnvInMemoryStoreObj.GetEnvStoreClone() - assert.Equal(t, store.StringEnv[constants.EnvKeyAdminSecret], "admin") assert.Equal(t, store.StringEnv[constants.EnvKeyEnv], "production") assert.False(t, store.BoolEnv[constants.EnvKeyDisableEmailVerification]) assert.False(t, store.BoolEnv[constants.EnvKeyDisableMagicLinkLogin]) assert.False(t, store.BoolEnv[constants.EnvKeyDisableBasicAuthentication]) assert.Equal(t, store.StringEnv[constants.EnvKeyJwtType], "HS256") - assert.Equal(t, store.StringEnv[constants.EnvKeyJwtSecret], "random_string") assert.Equal(t, store.StringEnv[constants.EnvKeyJwtRoleClaim], "role") assert.EqualValues(t, store.SliceEnv[constants.EnvKeyRoles], []string{"user"}) assert.EqualValues(t, store.SliceEnv[constants.EnvKeyDefaultRoles], []string{"user"}) - assert.EqualValues(t, store.SliceEnv[constants.EnvKeyProtectedRoles], []string{"admin"}) assert.EqualValues(t, store.SliceEnv[constants.EnvKeyAllowedOrigins], []string{"*"}) } diff --git a/server/test/resolvers_test.go b/server/test/resolvers_test.go index 5bc8e86..a1d7e3c 100644 --- a/server/test/resolvers_test.go +++ b/server/test/resolvers_test.go @@ -1,6 +1,7 @@ package test import ( + "log" "testing" "github.com/authorizerdev/authorizer/server/constants" @@ -20,20 +21,20 @@ func TestResolvers(t *testing.T) { envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseURL, dbURL) envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyDatabaseType, dbType) - env.InitEnv() + s := testSetup() + defer s.Server.Close() + db.InitDB() // clean the persisted config for test to use fresh config envData, err := db.Provider.GetEnv() + log.Println("=> envData:", envstore.EnvInMemoryStoreObj.GetEnvStoreClone()) if err == nil { envData.EnvData = "" db.Provider.UpdateEnv(envData) } env.PersistEnv() - s := testSetup() - defer s.Server.Close() - t.Run("should pass tests for "+dbType, func(t *testing.T) { // admin tests adminSignupTests(t, s) diff --git a/server/test/test.go b/server/test/test.go index 8132bdc..e0451a9 100644 --- a/server/test/test.go +++ b/server/test/test.go @@ -14,7 +14,6 @@ import ( "github.com/authorizerdev/authorizer/server/handlers" "github.com/authorizerdev/authorizer/server/middlewares" "github.com/authorizerdev/authorizer/server/sessionstore" - "github.com/gin-contrib/location" "github.com/gin-gonic/gin" ) @@ -73,13 +72,17 @@ func testSetup() TestSetup { } envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeyEnvPath, "../../.env.sample") - + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeySmtpHost, "smtp.yopmail.com") + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeySmtpPort, "2525") + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeySmtpUsername, "lakhan@yopmail.com") + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeySmtpPassword, "test") + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.StringStoreIdentifier, constants.EnvKeySenderEmail, "info@yopmail.com") + envstore.EnvInMemoryStoreObj.UpdateEnvVariable(constants.SliceStoreIdentifier, constants.EnvKeyProtectedRoles, []string{"admin"}) env.InitEnv() sessionstore.InitSession() w := httptest.NewRecorder() c, r := gin.CreateTestContext(w) - r.Use(location.Default()) r.Use(middlewares.GinContextToContextMiddleware()) r.Use(middlewares.CORSMiddleware()) diff --git a/server/test/update_user_test.go b/server/test/update_user_test.go index 58e06d3..0740af7 100644 --- a/server/test/update_user_test.go +++ b/server/test/update_user_test.go @@ -24,7 +24,7 @@ func updateUserTest(t *testing.T, s TestSetup) { }) user := *signupRes.User - adminRole := "admin" + adminRole := "supplier" userRole := "user" newRoles := []*string{&adminRole, &userRole} _, err := resolvers.UpdateUserResolver(ctx, model.UpdateUserInput{ diff --git a/server/test/urls_test.go b/server/test/urls_test.go index 1a01dc1..2f2fbcd 100644 --- a/server/test/urls_test.go +++ b/server/test/urls_test.go @@ -8,9 +8,9 @@ import ( ) func TestGetHostName(t *testing.T) { - authorizer_url := "http://test.herokuapp.com:80" + url := "http://test.herokuapp.com:80" - host, port := utils.GetHostParts(authorizer_url) + host, port := utils.GetHostParts(url) expectedHost := "test.herokuapp.com" assert.Equal(t, host, expectedHost, "hostname should be equal") @@ -18,9 +18,9 @@ func TestGetHostName(t *testing.T) { } func TestGetDomainName(t *testing.T) { - authorizer_url := "http://test.herokuapp.com" + url := "http://test.herokuapp.com" - got := utils.GetDomainName(authorizer_url) + got := utils.GetDomainName(url) want := "herokuapp.com" assert.Equal(t, got, want, "domain name should be equal") diff --git a/server/token/admin_token.go b/server/token/admin_token.go index bed0d0a..f1780d2 100644 --- a/server/token/admin_token.go +++ b/server/token/admin_token.go @@ -2,7 +2,6 @@ package token import ( "fmt" - "log" "github.com/authorizerdev/authorizer/server/constants" "github.com/authorizerdev/authorizer/server/cookie" @@ -25,7 +24,7 @@ func GetAdminAuthToken(gc *gin.Context) (string, error) { } err = bcrypt.CompareHashAndPassword([]byte(token), []byte(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAdminSecret))) - log.Println("error comparing hash:", err) + if err != nil { return "", fmt.Errorf(`unauthorized`) } diff --git a/server/token/verification_token.go b/server/token/verification_token.go index 98b2089..5e70bfb 100644 --- a/server/token/verification_token.go +++ b/server/token/verification_token.go @@ -23,7 +23,7 @@ type CustomClaim struct { } // CreateVerificationToken creates a verification JWT token -func CreateVerificationToken(email string, tokenType string) (string, error) { +func CreateVerificationToken(email, tokenType, hostname string) (string, error) { t := jwt.New(jwt.GetSigningMethod(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyJwtType))) t.Claims = &CustomClaim{ @@ -31,7 +31,7 @@ func CreateVerificationToken(email string, tokenType string) (string, error) { ExpiresAt: time.Now().Add(time.Minute * 30).Unix(), }, tokenType, - VerificationRequestToken{Email: email, Host: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAuthorizerURL), RedirectURL: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAppURL)}, + VerificationRequestToken{Email: email, Host: hostname, RedirectURL: envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyAppURL)}, } return t.SignedString([]byte(envstore.EnvInMemoryStoreObj.GetStringStoreEnvVariable(constants.EnvKeyJwtSecret))) diff --git a/server/utils/common.go b/server/utils/common.go index 338fc30..2438d3b 100644 --- a/server/utils/common.go +++ b/server/utils/common.go @@ -34,3 +34,16 @@ func SaveSessionInDB(userId string, c *gin.Context) { log.Println("=> session saved in db:", sessionData) } } + +// RemoveDuplicateString removes duplicate strings from a string slice +func RemoveDuplicateString(strSlice []string) []string { + allKeys := make(map[string]bool) + list := []string{} + for _, item := range strSlice { + if _, value := allKeys[item]; !value { + allKeys[item] = true + list = append(list, item) + } + } + return list +} diff --git a/server/utils/urls.go b/server/utils/urls.go index 6022487..284e259 100644 --- a/server/utils/urls.go +++ b/server/utils/urls.go @@ -1,10 +1,23 @@ package utils import ( + "log" "net/url" "strings" + + "github.com/gin-gonic/gin" ) +// GetHost returns hostname from request context +func GetHost(c *gin.Context) string { + scheme := "http" + if c.Request.TLS != nil { + scheme = "https" + } + log.Println("=> url:", scheme+"://"+c.Request.Host) + return scheme + "://" + c.Request.Host +} + // GetHostName function returns hostname and port func GetHostParts(uri string) (string, string) { tempURI := uri diff --git a/templates/app.tmpl b/templates/app.tmpl index b841808..58f0159 100644 --- a/templates/app.tmpl +++ b/templates/app.tmpl @@ -2,8 +2,12 @@ + {{.data.organizationName}} + + + Document