mirror of
https://github.com/andwati/zitadel.git
synced 2026-11-14 18:05:12 +00:00
feat: invite user link (#8578)
# Which Problems Are Solved As an administrator I want to be able to invite users to my application with the API V2, some user data I will already prefil, the user should add the authentication method themself (password, passkey, sso). # How the Problems Are Solved - A user can now be created with a email explicitly set to false. - If a user has no verified email and no authentication method, an `InviteCode` can be created through the User V2 API. - the code can be returned or sent through email - additionally `URLTemplate` and an `ApplicatioName` can provided for the email - The code can be resent and verified through the User V2 API - The V1 login allows users to verify and resend the code and set a password (analog user initialization) - The message text for the user invitation can be customized # Additional Changes - `verifyUserPasskeyCode` directly uses `crypto.VerifyCode` (instead of `verifyEncryptedCode`) - `verifyEncryptedCode` is removed (unnecessarily queried for the code generator) # Additional Context - closes #8310 - TODO: login V2 will have to implement invite flow: https://github.com/zitadel/typescript/issues/166
This commit is contained in:
@@ -72,6 +72,8 @@ import {
|
||||
GetCustomPasswordChangeMessageTextResponse,
|
||||
GetCustomPasswordlessRegistrationMessageTextRequest,
|
||||
GetCustomPasswordlessRegistrationMessageTextResponse,
|
||||
GetCustomInviteUserMessageTextRequest,
|
||||
GetCustomInviteUserMessageTextResponse,
|
||||
GetCustomPasswordResetMessageTextRequest,
|
||||
GetCustomPasswordResetMessageTextResponse,
|
||||
GetCustomVerifyEmailMessageTextRequest,
|
||||
@@ -96,6 +98,8 @@ import {
|
||||
GetDefaultPasswordChangeMessageTextResponse,
|
||||
GetDefaultPasswordlessRegistrationMessageTextRequest,
|
||||
GetDefaultPasswordlessRegistrationMessageTextResponse,
|
||||
GetDefaultInviteUserMessageTextRequest,
|
||||
GetDefaultInviteUserMessageTextResponse,
|
||||
GetDefaultPasswordResetMessageTextRequest,
|
||||
GetDefaultPasswordResetMessageTextResponse,
|
||||
GetDefaultVerifyEmailMessageTextRequest,
|
||||
@@ -224,6 +228,8 @@ import {
|
||||
SetDefaultPasswordChangeMessageTextResponse,
|
||||
SetDefaultPasswordlessRegistrationMessageTextRequest,
|
||||
SetDefaultPasswordlessRegistrationMessageTextResponse,
|
||||
SetDefaultInviteUserMessageTextRequest,
|
||||
SetDefaultInviteUserMessageTextResponse,
|
||||
SetDefaultPasswordResetMessageTextRequest,
|
||||
SetDefaultPasswordResetMessageTextResponse,
|
||||
SetDefaultVerifyEmailMessageTextRequest,
|
||||
@@ -311,6 +317,8 @@ import {
|
||||
ResetCustomPasswordChangeMessageTextToDefaultResponse,
|
||||
ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest,
|
||||
ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse,
|
||||
ResetCustomInviteUserMessageTextToDefaultRequest,
|
||||
ResetCustomInviteUserMessageTextToDefaultResponse,
|
||||
ResetCustomPasswordResetMessageTextToDefaultRequest,
|
||||
ResetCustomPasswordResetMessageTextToDefaultResponse,
|
||||
ResetCustomVerifyEmailMessageTextToDefaultRequest,
|
||||
@@ -722,6 +730,32 @@ export class AdminService {
|
||||
return this.grpcService.admin.resetCustomPasswordChangeMessageTextToDefault(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getDefaultInviteUserMessageText(
|
||||
req: GetDefaultInviteUserMessageTextRequest,
|
||||
): Promise<GetDefaultInviteUserMessageTextResponse.AsObject> {
|
||||
return this.grpcService.admin.getDefaultInviteUserMessageText(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getCustomInviteUserMessageText(
|
||||
req: GetCustomInviteUserMessageTextRequest,
|
||||
): Promise<GetCustomInviteUserMessageTextResponse.AsObject> {
|
||||
return this.grpcService.admin.getCustomInviteUserMessageText(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public setDefaultInviteUserMessageText(
|
||||
req: SetDefaultInviteUserMessageTextRequest,
|
||||
): Promise<SetDefaultInviteUserMessageTextResponse.AsObject> {
|
||||
return this.grpcService.admin.setDefaultInviteUserMessageText(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public resetCustomInviteUserMessageTextToDefault(
|
||||
lang: string,
|
||||
): Promise<ResetCustomInviteUserMessageTextToDefaultResponse.AsObject> {
|
||||
const req = new ResetCustomInviteUserMessageTextToDefaultRequest();
|
||||
req.setLanguage(lang);
|
||||
return this.grpcService.admin.resetCustomInviteUserMessageTextToDefault(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public SetUpOrg(org: SetUpOrgRequest.Org, human: SetUpOrgRequest.Human): Promise<SetUpOrgResponse.AsObject> {
|
||||
const req = new SetUpOrgRequest();
|
||||
|
||||
|
||||
@@ -133,6 +133,8 @@ import {
|
||||
GetCustomLoginTextsResponse,
|
||||
GetCustomPasswordChangeMessageTextRequest,
|
||||
GetCustomPasswordChangeMessageTextResponse,
|
||||
GetCustomInviteUserMessageTextRequest,
|
||||
GetCustomInviteUserMessageTextResponse,
|
||||
GetCustomPasswordlessRegistrationMessageTextRequest,
|
||||
GetCustomPasswordlessRegistrationMessageTextResponse,
|
||||
GetCustomPasswordResetMessageTextRequest,
|
||||
@@ -155,6 +157,8 @@ import {
|
||||
GetDefaultLoginTextsResponse,
|
||||
GetDefaultPasswordChangeMessageTextRequest,
|
||||
GetDefaultPasswordChangeMessageTextResponse,
|
||||
GetDefaultInviteUserMessageTextRequest,
|
||||
GetDefaultInviteUserMessageTextResponse,
|
||||
GetDefaultPasswordComplexityPolicyRequest,
|
||||
GetDefaultPasswordComplexityPolicyResponse,
|
||||
GetDefaultPasswordlessRegistrationMessageTextRequest,
|
||||
@@ -386,6 +390,8 @@ import {
|
||||
ResetCustomLoginTextsToDefaultResponse,
|
||||
ResetCustomPasswordChangeMessageTextToDefaultRequest,
|
||||
ResetCustomPasswordChangeMessageTextToDefaultResponse,
|
||||
ResetCustomInviteUserMessageTextToDefaultRequest,
|
||||
ResetCustomInviteUserMessageTextToDefaultResponse,
|
||||
ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest,
|
||||
ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse,
|
||||
ResetCustomPasswordResetMessageTextToDefaultRequest,
|
||||
@@ -423,6 +429,8 @@ import {
|
||||
SetCustomLoginTextsResponse,
|
||||
SetCustomPasswordChangeMessageTextRequest,
|
||||
SetCustomPasswordChangeMessageTextResponse,
|
||||
SetCustomInviteUserMessageTextRequest,
|
||||
SetCustomInviteUserMessageTextResponse,
|
||||
SetCustomPasswordlessRegistrationMessageTextRequest,
|
||||
SetCustomPasswordlessRegistrationMessageTextResponse,
|
||||
SetCustomPasswordResetMessageTextRequest,
|
||||
@@ -804,6 +812,32 @@ export class ManagementService {
|
||||
return this.grpcService.mgmt.resetCustomPasswordChangeMessageTextToDefault(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getDefaultInviteUserMessageText(
|
||||
req: GetDefaultInviteUserMessageTextRequest,
|
||||
): Promise<GetDefaultInviteUserMessageTextResponse.AsObject> {
|
||||
return this.grpcService.mgmt.getDefaultInviteUserMessageText(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public getCustomInviteUserMessageText(
|
||||
req: GetCustomInviteUserMessageTextRequest,
|
||||
): Promise<GetCustomInviteUserMessageTextResponse.AsObject> {
|
||||
return this.grpcService.mgmt.getCustomInviteUserMessageText(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public setCustomInviteUserMessageText(
|
||||
req: SetCustomInviteUserMessageTextRequest,
|
||||
): Promise<SetCustomInviteUserMessageTextResponse.AsObject> {
|
||||
return this.grpcService.mgmt.setCustomInviteUserMessageCustomText(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public resetCustomInviteUserMessageTextToDefault(
|
||||
lang: string,
|
||||
): Promise<ResetCustomInviteUserMessageTextToDefaultResponse.AsObject> {
|
||||
const req = new ResetCustomInviteUserMessageTextToDefaultRequest();
|
||||
req.setLanguage(lang);
|
||||
return this.grpcService.mgmt.resetCustomInviteUserMessageTextToDefault(req, null).then((resp) => resp.toObject());
|
||||
}
|
||||
|
||||
public updateUserName(userId: string, username: string): Promise<UpdateUserNameResponse.AsObject> {
|
||||
const req = new UpdateUserNameRequest();
|
||||
req.setUserId(userId);
|
||||
|
||||
Reference in New Issue
Block a user