diff --git a/backend/src/Datarekisteri/Backend/API.hs b/backend/src/Datarekisteri/Backend/API.hs index 77e18fa..e559dd0 100644 --- a/backend/src/Datarekisteri/Backend/API.hs +++ b/backend/src/Datarekisteri/Backend/API.hs @@ -162,7 +162,7 @@ resolveMutation :: (MonadRequest m, MonadEmail m, MonadRandom m, MonadTime m, MonadDB m, MonadError GQLError m, MonadPermissions m) => Mutation m resolveMutation = Mutation { apply = newUser - , verifyEmail = \(Arg secret) -> voidU $ dbVerifyEmail secret + , verifyEmail = \(Arg secret) -> either (const False) (const True) <$> dbVerifyEmail secret , resendVerificationEmail = \(Arg id) -> targetUser id >>= dbGetUserPendingEmail >>= liftDBEither >>= maybe (pure Unit) (dbGetUserByEmail >=> liftDBEither >=> voidU . sendVerificationSecret) , update = \updateArgs (Arg id) -> targetUser id >>= \user -> @@ -258,7 +258,7 @@ data Query m = Query data Mutation m = Mutation { apply :: ApplicationArgs -> m (User m) - , verifyEmail :: Arg "secret" Text -> m Unit + , verifyEmail :: Arg "secret" Text -> m Bool , resendVerificationEmail :: Arg "user" (Maybe UserID) -> m Unit , update :: UpdateArgs -> Arg "user" (Maybe UserID) -> m (User m) , newToken :: NewTokenArgs -> m (Token m) diff --git a/frontend/schema.gql b/frontend/schema.gql index 6186606..6a4e652 100644 --- a/frontend/schema.gql +++ b/frontend/schema.gql @@ -65,7 +65,7 @@ type Query { type Mutation { apply(email: Email!, phoneNumber: PhoneNumber!, password: String!, name: String!, nickname: String, birthdate: Date!, homeplace: String!, application: String!): User! - verifyEmail(secret: String!): Unit! + verifyEmail(secret: String!): Boolean! resendVerificationEmail(user: UserID): Unit! update(email: Email, phoneNumber: PhoneNumber, password: String, name: String, nickname: String, homeplace: String, application: String, user: UserID): User! newToken(comment: String, name: String, permissions: String): Token! diff --git a/frontend/src/Datarekisteri/Frontend/Handlers/VerifyEmail.hs b/frontend/src/Datarekisteri/Frontend/Handlers/VerifyEmail.hs index 3840a92..d718819 100644 --- a/frontend/src/Datarekisteri/Frontend/Handlers/VerifyEmail.hs +++ b/frontend/src/Datarekisteri/Frontend/Handlers/VerifyEmail.hs @@ -36,7 +36,11 @@ postVerifyEmailR :: (YesodAuth DataIdClient, AuthId DataIdClient ~ Text) => Hand postVerifyEmailR = do ((result, widget), enctype) <- runFormPost verifyForm case result of - FormSuccess verify -> apiRequest @VerifyEmail False verify >> setMessage "Sähköpostiosoite vahvistettu" >> redirect OwnProfileR + FormSuccess verify -> do + success <- apiRequest @VerifyEmail False verify + case success of + VerifyEmail True -> setMessage "Sähköpostiosoite vahvistettu" >> redirect OwnProfileR + VerifyEmail False -> setMessage "Virheellinen vahvistuskoodi" >> redirect VerifyEmailR _ -> defaultLayout $ verifyEmailW (widget, enctype) verifyEmailW (codeWidget, codeEnctype) = do