TailormapOidcUser.java

/*
 * Copyright (C) 2025 B3Partners B.V.
 *
 * SPDX-License-Identifier: MIT
 */

package org.tailormap.api.security;

import java.io.Serial;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.oauth2.core.oidc.OidcIdToken;
import org.springframework.security.oauth2.core.oidc.OidcUserInfo;
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;

public class TailormapOidcUser extends DefaultOidcUser implements TailormapUserDetails {
  @Serial
  private static final long serialVersionUID = 1L;

  private final Collection<TailormapAdditionalProperty> additionalGroupProperties;

  private final String oidcRegistrationName;

  public TailormapOidcUser(
      Collection<? extends GrantedAuthority> authorities,
      OidcIdToken idToken,
      OidcUserInfo userInfo,
      String nameAttributeKey,
      String oidcRegistrationName,
      Collection<TailormapAdditionalProperty> additionalGroupProperties) {
    super(authorities, idToken, userInfo, nameAttributeKey);
    this.oidcRegistrationName = oidcRegistrationName;
    this.additionalGroupProperties = Collections.unmodifiableCollection(additionalGroupProperties);
  }

  @Override
  public Collection<TailormapAdditionalProperty> getAdditionalProperties() {
    return List.of();
  }

  @Override
  public Collection<TailormapAdditionalProperty> getAdditionalGroupProperties() {
    return additionalGroupProperties;
  }

  @Override
  public String getPassword() {
    return null;
  }

  @Override
  public String getUsername() {
    return super.getName();
  }

  @Override
  public String getOrganisation() {
    return oidcRegistrationName;
  }
}