diff --git a/backend/application/auth/verify/usecase.go b/backend/application/auth/verify/usecase.go index 91bb78ff..996c8a24 100644 --- a/backend/application/auth/verify/usecase.go +++ b/backend/application/auth/verify/usecase.go @@ -2,6 +2,7 @@ package verify import ( "crypto/rand" + "encoding/base64" "errors" "github.com/khanzadimahdi/testproject/application/auth" @@ -32,7 +33,12 @@ func (uc *UseCase) Execute(request Request) (*Response, error) { }, nil } - claims, err := uc.jwt.Verify(request.Token) + registrationToken, err := base64.URLEncoding.DecodeString(request.Token) + if err != nil { + return nil, err + } + + claims, err := uc.jwt.Verify(string(registrationToken)) if err != nil { return &Response{ ValidationErrors: validationErrors{ diff --git a/backend/application/auth/verify/usecase_test.go b/backend/application/auth/verify/usecase_test.go index eef46f5b..392434f7 100644 --- a/backend/application/auth/verify/usecase_test.go +++ b/backend/application/auth/verify/usecase_test.go @@ -1,15 +1,16 @@ package verify import ( + "encoding/base64" "errors" - "github.com/khanzadimahdi/testproject/domain" - "github.com/stretchr/testify/mock" "testing" "time" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" "github.com/khanzadimahdi/testproject/application/auth" + "github.com/khanzadimahdi/testproject/domain" "github.com/khanzadimahdi/testproject/domain/user" "github.com/khanzadimahdi/testproject/infrastructure/crypto/ecdsa" crypto "github.com/khanzadimahdi/testproject/infrastructure/crypto/mock" @@ -246,5 +247,5 @@ func generateToken(t *testing.T, j *jwt.JWT, u user.User, expiresAt time.Time, a token, err := j.Generate(b.Build()) assert.NoError(t, err) - return token + return base64.URLEncoding.EncodeToString([]byte(token)) } diff --git a/frontend/composables/auth.ts b/frontend/composables/auth.ts index 6bdb7fa5..8e6f12c4 100644 --- a/frontend/composables/auth.ts +++ b/frontend/composables/auth.ts @@ -68,6 +68,52 @@ async function logout() { await navigateTo({path: loginPage}) } +async function register(identity: string) { + const {data, error} = await useFetch( + useApiUrlResolver().resolve("api/auth/register"), + { + method: "POST", + body: { + "identity": identity, + } + } + ) + + if (error.value) { + console.log({ + statusCode: error.value.statusCode, + data: error.value.data, + }) + + throw new Error("registration failed"); + } +} + +async function verify(token: string, name:string, username:string, password:string, repassword:string) { + const {data, error} = await useFetch( + useApiUrlResolver().resolve("api/auth/verify"), + { + method: "POST", + body: { + "token": token, + "name": name, + "username": username, + "password": password, + "repassword": repassword, + } + } + ) + + if (error.value) { + console.log({ + statusCode: error.value.statusCode, + data: error.value.data, + }) + + throw new Error("verification failed"); + } +} + function accessToken() { const authTokens = retrieve() @@ -153,6 +199,8 @@ export function useAuth() { isLogin: isLogin, forgotPassword: forgotPassword, resetPassword: resetPassword, + register: register, + verify: verify, } } diff --git a/frontend/pages/auth/register.vue b/frontend/pages/auth/register.vue index e8e92ede..1fdb1c1c 100644 --- a/frontend/pages/auth/register.vue +++ b/frontend/pages/auth/register.vue @@ -6,40 +6,72 @@