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 @@

ثبت نام

-
-
- -
- {{ errors.identity }} -
-
-
- -
- {{ errors.password }} + + + + + + + + + + + + + +
+
+

+ + توجه کنید +

+
+
    +
  • بعد از ثبت نام یک پیام در ایمیل خود دریافت خواهید کرد و با استفاده از آن میتوانید باقی مراحل ثبت + نام را انجام دهید. +
  • +
  • برای ثبت نام از ایمیل خود استفاده کنید.
  • +
  • چنانچه مراحل ثبت نام را قبلا کامل کرده اید میتوانید + وارد حساب کاربری + خود شوید. +
  • +
-
- -
-
-
- بازیابی کلمه عبور -
-
- ورود +
+
-
+
+
+ بازیابی کلمه عبور + +
+
+ ورود +
+
+
@@ -62,23 +94,23 @@ useHead({ // reflects form parameters const params = reactive({ identity: null, - password: null, loading: false, + showNextSteps: false, }) // reflects the validation errors to corresponding html input. const errors = reactive({ identity: null, - password: null, }) -async function login() { +async function register() { try { params.loading = true - await useAuth().login(params.identity, params.password) + await useAuth().register(params.identity) + params.showNextSteps = true } catch (error) { console.log(error) - errors.identity = "نام کاربری یا کلمه عبور اشتباه است" + errors.identity = "شما قبلا ثبت نام کرده اید" } params.loading = false diff --git a/frontend/pages/auth/reset-password.vue b/frontend/pages/auth/reset-password.vue index 46a18226..fd9fd2b7 100644 --- a/frontend/pages/auth/reset-password.vue +++ b/frontend/pages/auth/reset-password.vue @@ -30,7 +30,7 @@   وارد حساب کاربری خود شوید

-