ユーザー認証
Squadbaseでは組み込みのユーザー認証によって、コードの追加なしでユーザー認証と管理、ロールベースのアクセスコントロールを実現できます。
Squadbaseにデプロイされたアプリは自動的にユーザー認証とロールベースのアクセス制御で保護されます。 公開設定がPublicではないアプリでは、Squadbaseのチームに追加されたメンバーのうち、プロジェクトに招待されたメンバーのみがアプリケーションにアクセスできます。
メンバーの追加
Squadbaseにデプロイされたアプリにアクセスできるメンバーを追加するには、以下の手順を実行します。
- ダッシュボードの設定画面から、チームにメンバーを招待する
- メンバーがチームに参加する
- プロジェクトの設定画面から、プロジェクトにメンバーを追加する。この際、プロジェクトロールを設定できます。
メンバーの権限管理
Squadbaseでは、チームスコープの操作を管理する「チームロール」とプロジェクトスコープの操作を管理する「プロジェクトロール」の2種類のロールを提供しています。
チームロールの設定
チームロールはダッシュボードの設定ページから管理することができます。ロールの種別と権限は以下の通りです。
- Admin: 全てのプロジェクトの設定を変更できる
- Developer: 新規プロジェクト作成・チームメンバーの招待・プロジェクトの設定変更ができる
- Contributer: 招待されたプロジェクトにデプロイができる
- Viewer: 招待されたプロジェクトの閲覧ができる
プロジェクトロールの設定
プロジェクトロールは、ダッシュボードのプロジェクトページ内の設定タブから管理することができます。

プロジェクトロールには自由な文字列を設定することができます。設定したロールは、以下のようにコードからアクセスすることができます。
import streamlit as st
import squadbase.streamlit as sq
user_info = sq.auth.get_user()
st.write(f"Hello, {user_info['firstName']} {user_info['lastName']}")
if "admin" in user_info['roles']:
  st.write("You are an admin")
else:
  st.write("You are not an admin")import { createNextjsServerClient } from "@squadbase/nextjs";
// In your Next.js server component or API route
const client = createNextjsServerClient({
  projectId: "your-project-id",
});
// Get the current authenticated user
const user = await client.getUser();
console.log(user);
// {
//   username: string,
//   email: string,
//   firstName: string,
//   lastName: string,
//   iconUrl: string | null,
//   roles: string[]
// }import { createServerClient } from "@squadbase/server";
const client = createServerClient({
  projectId: "your-project-id",
  cookieOptions: {
    getCookie: () => {
      // Implement your cookie retrieval logic here
      // This should return the session cookie string
    },
  },
});
// Get the current authenticated user
const user = await client.getUser();
console.log(user);
// {
//   username: string,
//   email: string,
//   firstName: string,
//   lastName: string,
//   iconUrl: string | null,
//   roles: string[]
// }import requests
def get_user_info_from_cookie(cookie):
  subdomain = "your-subdomain"
  # Construct the URL for the POST request
  url = f"https://{subdomain}.squadbase.app/_sqcore/auth"
  token = cookie.get("__Host-squadbase-session")
  headers = {
      "Authorization": f"Bearer {token}"
  }
  response = requests.post(url, headers=headers)
  if response.status_code == 200:
      return response.json()
  else:
      return {"error": "Failed to retrieve user information"}
cookie = {"__Host-squadbase-session": "your-auth-token"}
user_info = get_user_info_from_cookie(cookie)
print(user_info)このユーザー情報の取得は、Squadbaseにデプロイされた時のみ有効です。
そのため、ローカル環境では以下のようにモック情報を設定してください。
import streamlit as st
import squadbase.streamlit as sq
mock_user_data = {
    "username": "testuser",
    "firstName": "Test",
    "lastName": "User",
    "iconUrl": None,
    "email": "test@example.com",
    "roles": ["admin"]
}
user_info = sq.auth.get_user(mock_data=mock_user_data)
st.write(f"Hello, {user_info['firstName']} {user_info['lastName']}")
if "admin" in user_info['roles']:
  st.write("You are an admin")
else:
  st.write("You are not an admin")const client = createNextjsServerClient({
  projectId: "your-project-id",
  mockUser: {
    username: "test-user",
    email: "test@example.com",
    firstName: "Test",
    lastName: "User",
    iconUrl: null,
    roles: ["user"],
  },
});const client = createServerClient({
  projectId: "your-project-id",
  cookieOptions: {
    getCookie: () => undefined,
  },
  mockUser: {
    username: "test-user",
    email: "test@example.com",
    firstName: "Test",
    lastName: "User",
    iconUrl: null,
    roles: ["user"],
  },
});import requests
mock_user_data = {
  "username": "testuser",
  "firstName": "Test",
  "lastName": "User",
  "iconUrl": None,
  "email": "test@example.com",
  "roles": ["admin"]
}
def get_user_info_from_cookie(cookie):
  subdomain = "your-subdomain"
  # Construct the URL for the POST request
  url = f"https://{subdomain}.squadbase.app/_sqcore/auth"
  token = cookie.get("__Host-squadbase-session")
  if token is None:
      return mock_user_data
  headers = {
    "Authorization": f"Bearer {token}"
  }
  response = requests.post(url, headers=headers)
  if response.status_code == 200:
      return response.json()
  else:
      return {"error": "Failed to retrieve user information"}
cookie = {"__Host-squadbase-session": "your-auth-token"}
user_info = get_user_info_from_cookie(cookie)
print(user_info)ユーザー情報取得用のAPIの詳細については、REST APIをご覧ください。各種フレームワークで使用するためのSDKも提供しています。