テ ナントにユーザーを紐づけロールを設定する
テナントの作成ができたら、テナントにセルフサインアップしたユーザーを紐付けます。
テナント作成のソースに下記を追記してください。
- PHP
- Node.js
- Go
- Python
- Java
- C#(.Net8)
- C#(.Netfw4.8)
// ユーザー属性情報を取得
$userAttributesResponse = $authClient->getUserAttributes();
$userAttributes = $userAttributesResponse->getUserAttributes();
foreach ($userAttributes as $attribute) {
$attributeName = $attribute->getAttributeName();
$attributeType = $attribute->getAttributeType();
// ユーザー属性情報で number 型が定義されている場合は置換する
if (isset($userAttributeValues[$attributeName]) && $attributeType === 'number') {
$userAttributeValues[$attributeName] = (int) $userAttributeValues[$attributeName];
}
}
// テナントユーザー登録用のパラメータを作成
$createTenantUserParam = new CreateTenantUserParam();
$createTenantUserParam
->setEmail($email)
->setAttributes($userAttributeValues);
// SaaSユーザーをテナントユーザーに追加
$tenantUser = $authClient->createTenantUser($tenantId, $createTenantUserParam);
// ユーザー属性情報の取得
const userAttributesObj = (await client.userAttributeApi.getUserAttributes()).data
const userAttributes = userAttributesObj.user_attributes
let userAttributeValuesCopy = userAttributeValues || {}
// ユーザー属性情報で number 型が定義されている場合は置換する
userAttributes.forEach((attribute) => {
const attributeName = attribute.attribute_name
const attributeType = attribute.attribute_type
if (userAttributeValuesCopy[attributeName] && attributeType === 'number') {
userAttributeValuesCopy[attributeName] = parseInt(userAttributeValuesCopy[attributeName], 10);
}
});
// テナントユーザー登録用のパラメータを作成
const createTenantUserParam: CreateTenantUserParam = {
email: userInfo.email,
attributes: userAttributeValuesCopy
}
// SaaSユーザーをテナントユーザーに追加
const tenantUser = (await client.tenantUserApi.createTenantUser(tenantId, createTenantUserParam)).data
// ユーザー属性情報の取得
userAttributesResp, err := authClient.GetUserAttributesWithResponse(context.Background())
if err != nil {
c.Logger().Errorf("Failed to retrieve user attributes: %v", err)
return c.JSON(http.StatusInternalServerError, echo.Map{"error": "Failed to retrieve user attributes"})
}
userAttributes := userAttributesResp.JSON200
if userAttributeValues == nil {
userAttributeValues = make(map[string]interface{})
}
// ユーザー属性情報で number 型が定義されている場合は置換する
if userAttributes != nil {
for _, attribute := range userAttributes.UserAttributes {
attributeName := attribute.AttributeName
attributeType := attribute.AttributeType
if value, ok := userAttributeValues[attributeName]; ok && attributeType == "number" {
userAttributeValues[attributeName], err = strconv.Atoi(value.(string))
if err != nil {
c.Logger().Errorf("Invalid user attribute value: %v", err)
return c.JSON(http.StatusBadRequest, echo.Map{"error": "Invalid user attribute value"})
}
}
}
}
// テナントユーザー登録用のパラメータを作成
createTenantUserParam := authapi.CreateTenantUserParam{
Email: userInfo.Email,
Attributes: userAttributeValues,
}
// SaaSユーザーをテナントユーザーに追加
tenantUserResp, err := authClient.CreateTenantUserWithResponse(context.Background(), tenantID, createTenantUserParam)
# ユーザー属性情報の取得
user_attributes_obj = UserAttributeApi(api_client=api_client).get_user_attributes()
# ユーザー属性情報で number 型が定義されている場合は置換する
if user_attribute_values is None:
user_attribute_values = {}
else:
user_attributes = user_attributes_obj.user_attributes
for attribute in user_attributes:
attribute_name = attribute.attribute_name
attribute_type = attribute.attribute_type.value
if attribute_name in user_attribute_values:
if attribute_type == "number":
user_attribute_values[attribute_name] = int(user_attribute_values[attribute_name])
# テナントユーザー登録用のパラメータを作成
create_tenant_user_param = CreateTenantUserParam(
email=auth_user.email, # 登録者自身のメールアドレス
attributes=user_attribute_values
)
# SaaSユーザーをテナントユーザーに追加
tenant_user = TenantUserApi(api_client=api_client).create_tenant_user(
tenant_id=tenant_id,
create_tenant_user_param=create_tenant_user_param
)
// ユーザー属性情報の取得
UserAttributeApi userAttributeApi = new UserAttributeApi(apiClient);
UserAttributes userAttributes = userAttributeApi.getUserAttributes();
// ユーザー属性情報で number 型が定義されている場合は置換する
for (Attribute attribute : userAttributes.getUserAttributes()) {
String attributeName = attribute.getAttributeName();
String attributeType = attribute.getAttributeType().getValue();
if (userAttributeValues.containsKey(attributeName)) {
Object attributeValue = userAttributeValues.get(attributeName);
if ("number".equalsIgnoreCase(attributeType)) {
try {
int numericValue = Integer.parseInt(attributeValue.toString());
userAttributeValues.put(attributeName, numericValue);
} catch (NumberFormatException e) {
System.err.println("Invalid value for user attribute: " + attributeName);
throw new ResponseStatusException(HttpStatus.BAD_REQUEST,
"Invalid value for user attribute: " + attributeName);
}
}
}
}
// テナントユーザー登録用のパラメータを作成
CreateTenantUserParam createTenantUserParam = new CreateTenantUserParam()
.email(userInfo.getEmail())
.attributes(userAttributeValues);
// SaaSユーザーをテナントユーザーに追加
TenantUserApi tenantUserApi = new TenantUserApi(apiClient);
User tenantUser = tenantUserApi.createTenantUser(tenantId, createTenantUserParam);
// ユーザー属性の取得
var userAttributeApi = new UserAttributeApi(authApiClientConfig);
var userAttributes = await userAttributeApi.GetUserAttributesAsync();
// ユーザー属性情報で number 型が定義されている場合は置換する
foreach (var attribute in userAttributes.VarUserAttributes)
{
var attributeName = attribute.AttributeName;
var attributeType = attribute.AttributeType.ToString();
if (userAttributeValues.ContainsKey(attributeName))
{
userAttributeValues[attributeName] = ConvertToExpectedType(userAttributeValues[attributeName], attributeType);
}
}
// テナントユーザー登録用のパラメータを作成
var createTenantUserParam = new CreateTenantUserParam(userInfo.Email, userAttributeValues);
// SaaSユーザーをテナントユーザーに追加
var tenantUserApi = new TenantUserApi(authApiClientConfig);
var tenantUser = await tenantUserApi.CreateTenantUserAsync(tenantId, createTenantUserParam);
// ユーザー属性の取得
var userAttributeApi = new UserAttributeApi(authApiClientConfig);
var userAttributes = await userAttributeApi.GetUserAttributesAsync();
// ユーザー属性情報で number 型が定義されている場合は置換する
foreach (var attribute in userAttributes.VarUserAttributes)
{
var attributeName = attribute.AttributeName;
var attributeType = attribute.AttributeType.ToString();
if (userAttributeValues.ContainsKey(attributeName) && attributeType.ToLower() == "number")
{
if (int.TryParse(userAttributeValues[attributeName]?.ToString(), out int numericValue))
{
userAttributeValues[attributeName] = numericValue;
}
else
{
return BadRequest("Invalid attribute value");
}
}
}
// テナントユーザー登録用のパラメータを作成
var createTenantUserParam = new CreateTenantUserParam(userInfo.Email, userAttributeValues);
// SaaSユーザーをテナントユーザーに追加
var tenantUserApi = new TenantUserApi(authApiClientConfig);
var tenantUser = await tenantUserApi.CreateTenantUserAsync(tenantId, createTenantUserParam);
CreateTenantUserParamオブジェクトを利用して ください。
setAttributesはテナントに追加属性を定義するで定義したテナントの属性情報をセットします。
続いて、ロールを設定します。
下記コードを追記してください。
- PHP
- Node.js
- Go
- Python
- Java
- C#(.Net8)
- C#(.Netfw4.8)
// ロール設定
$create_tenant_user_roles_param = new CreateTenantUserRolesParam();
$create_tenant_user_roles_param->setRoleNames(['admin']);
$auth_api_client->createTenantUserRoles($tenant->getId(), $request['userinfo']['id'], getenv('DEFAULT_SAASUSER_ENV'), $create_tenant_user_roles_param);
// ロール設定用のパラメータを作成
const createTenantUserRolesParam: CreateTenantUserRolesParam = {
role_names: ['admin']
}
// 作成したテナントユーザーにロールを設定
await client.tenantUserApi.createTenantUserRoles(tenantId, tenantUser.id, 3, createTenantUserRolesParam)
// ロール設定用のパラメータを作成
createTenantUserRolesParam := authapi.CreateTenantUserRolesParam{
RoleNames: []string{"admin"},
}
// 作成したテナントユーザーにロールを設定
_, err = authClient.CreateTenantUserRolesWithResponse(context.Background(), tenantID, tenantUserResp.JSON201.Id, 3, createTenantUserRolesParam)
# ロール設定用のパラメータを作成
create_tenant_user_roles_param = CreateTenantUserRolesParam(role_names=["admin"])
# 作成したテナントユーザーにロールを設定
TenantUserApi(api_client=api_client).create_tenant_user_roles(tenant_id=tenant_id, user_id=tenant_user.id, env_id=3, create_tenant_user_roles_param=create_tenant_user_roles_param)
// ロール設定用のパラメータを作成
CreateTenantUserRolesParam createTenantUserRolesParam = new CreateTenantUserRolesParam();
createTenantUserRolesParam.setRoleNames(Arrays.asList("admin"));
// 作成したテナントユーザーにロールを設定
tenantUserApi.createTenantUserRoles(tenantId, tenantUser.getId(), 3, createTenantUserRolesParam);
// ロール設定用のパラメータを作成
var createTenantUserRolesParam = new CreateTenantUserRolesParam(new List<string> { "admin" });
// 作成したテナントユーザーにロールを設定
await tenantUserApi.CreateTenantUserRolesAsync(tenantId, tenantUser.Id, 3, createTenantUserRolesParam);
// ロール設定用のパラメータを作成
var createTenantUserRolesParam = new CreateTenantUserRolesParam(new List<string> { "admin" });
// 作成したテナントユーザーにロールを設定
await tenantUserApi.CreateTenantUserRolesAsync(tenantId, tenantUser.Id, 3, createTenantUserRolesParam);
CreateTenantUserRolesParamオブジェクト利用してください。
setRoleNamesは複数指定できます。
指定できる値は、役割の定義で作成した「役割名」が指定できます。
API経由でテナントユーザーが登録できたかどうかの確認は、「SaaSus管理コンソール>SaaS 運用コンソール>ユーザー管理」よりご確認頂けます。