createRoleBinding method

Future createRoleBinding({
  1. required String operator,
  2. required String role,
  3. required String name,
  4. String? id,
  5. List<String>? subjects,
  6. List<Expression>? expressions,
  7. String? contextId,
})

Implementation

Future createRoleBinding({
  required String operator,
  required String role,
  required String name,
  String? id,
  List<String>? subjects,
  List<Expression>? expressions,
  String? contextId,
}) async {
  final uuid = Uuid();
  final roleBinding = RoleBinding()
    ..id = (id != null ? hex.decode(id) : uuid.v4buffer(List.filled(16, 0)))
    ..name = name;

  roleBinding.expressions.clear();
  if (expressions != null) {
    roleBinding.expressions.addAll(expressions);
  }
  roleBinding.subjects.clear();
  if (subjects != null) {
    roleBinding.subjects.addAll(subjects.map(base64.decode));
  }

  final request = roleBinding.createRequest();
  final client = getServiceClient(operator);
  final envelop = await requestEnvelope(
    request: request,
    contextId: contextId != null ? hex.decode(contextId) : null,
  );
  await client.tx.createTransaction(envelop);
  return id;
}