feat: multiple domains (#188)

* check uniqueness on create and register user

* change user email, reserve release unique email

* usergrant unique aggregate

* usergrant uniqueness

* validate UserGrant

* fix tests

* domain is set on username in all orgs

* domain in admin

* org domain sql

* zitadel domain org name

* org domains

* org iam policy

* default org iam policy

* SETUP

* load login names

* login by login name

* login name

* fix: merge master

* fix: merge master

* Update internal/user/repository/eventsourcing/user.go

Co-authored-by: Livio Amstutz <livio.a@gmail.com>

* fix: fix unique domains

* fix: rename env variable

Co-authored-by: adlerhurst <silvan.reusser@gmail.com>
Co-authored-by: Livio Amstutz <livio.a@gmail.com>
This commit is contained in:
Fabi
2020-06-16 11:40:18 +02:00
committed by GitHub
parent 64b14b4e19
commit 7a6ca24625
109 changed files with 12578 additions and 6025 deletions

View File

@@ -63,6 +63,47 @@
"in": "path",
"required": true,
"type": "string"
},
{
"name": "org_id",
"in": "query",
"required": false,
"type": "string"
},
{
"name": "creation_date",
"in": "query",
"required": false,
"type": "string",
"format": "date-time"
},
{
"name": "change_date",
"in": "query",
"required": false,
"type": "string",
"format": "date-time"
},
{
"name": "verified",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
},
{
"name": "primary",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
},
{
"name": "sequence",
"in": "query",
"required": false,
"type": "string",
"format": "uint64"
}
],
"tags": [
@@ -168,6 +209,82 @@
]
}
},
"/orgs/me/domains": {
"post": {
"operationId": "AddMyOrgDomain",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/v1OrgDomain"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/v1AddOrgDomainRequest"
}
}
],
"tags": [
"ManagementService"
]
}
},
"/orgs/me/domains/_search": {
"post": {
"operationId": "SearchMyOrgDomains",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/v1OrgDomainSearchResponse"
}
}
},
"parameters": [
{
"name": "body",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/v1OrgDomainSearchRequest"
}
}
],
"tags": [
"ManagementService"
]
}
},
"/orgs/me/domains/{domain}": {
"delete": {
"operationId": "RemoveMyOrgDomain",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"properties": {}
}
}
},
"parameters": [
{
"name": "domain",
"in": "path",
"required": true,
"type": "string"
}
],
"tags": [
"ManagementService"
]
}
},
"/orgs/me/members": {
"post": {
"operationId": "AddMyOrgMember",
@@ -3418,6 +3535,14 @@
},
"description": "`Value` represents a dynamically typed value which can be either\nnull, a number, a string, a boolean, a recursive struct value, or a\nlist of values. A producer of value is expected to set one of that\nvariants, absence of any variant indicates an error.\n\nThe JSON representation for `Value` is JSON value."
},
"v1AddOrgDomainRequest": {
"type": "object",
"properties": {
"domain": {
"type": "string"
}
}
},
"v1AddOrgMemberRequest": {
"type": "object",
"properties": {
@@ -4062,9 +4187,132 @@
"name": {
"type": "string"
},
"sequence": {
"type": "string",
"format": "uint64"
}
}
},
"v1OrgDomain": {
"type": "object",
"properties": {
"org_id": {
"type": "string"
},
"creation_date": {
"type": "string",
"format": "date-time"
},
"change_date": {
"type": "string",
"format": "date-time"
},
"domain": {
"type": "string"
},
"verified": {
"type": "boolean",
"format": "boolean"
},
"primary": {
"type": "boolean",
"format": "boolean"
},
"sequence": {
"type": "string",
"format": "uint64"
}
}
},
"v1OrgDomainSearchKey": {
"type": "string",
"enum": [
"ORGDOMAINSEARCHKEY_UNSPECIFIED",
"ORGDOMAINSEARCHKEY_DOMAIN"
],
"default": "ORGDOMAINSEARCHKEY_UNSPECIFIED"
},
"v1OrgDomainSearchQuery": {
"type": "object",
"properties": {
"key": {
"$ref": "#/definitions/v1OrgDomainSearchKey"
},
"method": {
"$ref": "#/definitions/v1SearchMethod"
},
"value": {
"type": "string"
}
}
},
"v1OrgDomainSearchRequest": {
"type": "object",
"properties": {
"offset": {
"type": "string",
"format": "uint64"
},
"limit": {
"type": "string",
"format": "uint64"
},
"queries": {
"type": "array",
"items": {
"$ref": "#/definitions/v1OrgDomainSearchQuery"
}
}
}
},
"v1OrgDomainSearchResponse": {
"type": "object",
"properties": {
"offset": {
"type": "string",
"format": "uint64"
},
"limit": {
"type": "string",
"format": "uint64"
},
"total_result": {
"type": "string",
"format": "uint64"
},
"result": {
"type": "array",
"items": {
"$ref": "#/definitions/v1OrgDomainView"
}
}
}
},
"v1OrgDomainView": {
"type": "object",
"properties": {
"org_id": {
"type": "string"
},
"creation_date": {
"type": "string",
"format": "date-time"
},
"change_date": {
"type": "string",
"format": "date-time"
},
"domain": {
"type": "string"
},
"verified": {
"type": "boolean",
"format": "boolean"
},
"primary": {
"type": "boolean",
"format": "boolean"
},
"sequence": {
"type": "string",
"format": "uint64"