Merged in feature/curity-social-login (pull request #2963)

feat(SW-3541): Do social login after login to SAS

* feat(auth): wip social login via curity

* Setup social login auth flow

* Merge branch 'master' of bitbucket.org:scandic-swap/web into feature/curity-social-login

* Added support for getting scandic tokens and refresh them

* feat: Enhance social login and session management with auto-refresh and improved error handling

* Merge branch 'master' of bitbucket.org:scandic-swap/web into feature/curity-social-login

* wrap layout in suspense

* revert app/layout.tsx

* fix import

* cleanup

* merge

* merge

* dont pass client_secret in the url to curity

* add state validation when doing social login through /authorize

* remove debug logging


Approved-by: Anton Gunnarsson
This commit is contained in:
Joakim Jäderberg
2025-10-16 12:47:12 +00:00
parent 1850cfd20d
commit 291310e841
24 changed files with 827 additions and 84 deletions

View File

@@ -2,13 +2,7 @@
import { usePathname, useSearchParams } from "next/navigation"
import { parseAsInteger, useQueryState } from "nuqs"
import {
createContext,
useCallback,
useContext,
useMemo,
useState,
} from "react"
import { createContext, useCallback, useContext, useMemo } from "react"
import { type IntlShape, useIntl } from "react-intl"
import { CurrencyEnum } from "@scandic-hotels/common/constants/currency"
@@ -76,8 +70,7 @@ export function SelectRateProvider({
parseAsInteger.withDefault(0)
)
const [_bookingCodeFilter, setBookingCodeFilter] =
useState<BookingCodeFilterEnum>(BookingCodeFilterEnum.Discounted)
const [_bookingCodeFilter, setBookingCodeFilter] = useBookingCodeFilter()
const selectRateBooking = parseSelectRateSearchParams(
searchParamsToRecord(searchParams)
@@ -313,7 +306,7 @@ export function SelectRateProvider({
_bookingCodeFilter === BookingCodeFilterEnum.Discounted &&
!selectRateInput.data?.booking.bookingCode
? BookingCodeFilterEnum.All
: _bookingCodeFilter
: (_bookingCodeFilter as BookingCodeFilterEnum)
const roomAvailabilityWithAdjustedRoomCount: (AvailabilityWithRoomInfo | null)[][] =
roomAvailability.map((availability, roomIndex) => {
@@ -557,12 +550,15 @@ function getAvailabilityForRoom(
function useUpdateBooking() {
const pathname = usePathname()
const [bookingCodeFilter] = useBookingCodeFilter()
return function updateBooking(booking: SelectRateBooking) {
const newUrl = new URL(pathname, window.location.origin)
// TODO: Handle existing search params
newUrl.search = serializeBookingSearchParams(booking).toString()
newUrl.searchParams.set(BookingCodeFilterQueryName, bookingCodeFilter)
// router.replace(newUrl.toString(), { scroll: false })
window.history.replaceState({}, "", newUrl.toString())
}
@@ -575,3 +571,10 @@ function isRoomPackage(x: {
x.code as RoomPackageCodeEnum
)
}
const BookingCodeFilterQueryName = "bookingCodeFilter"
function useBookingCodeFilter() {
return useQueryState(BookingCodeFilterQueryName, {
defaultValue: BookingCodeFilterEnum.Discounted,
})
}