mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-12 01:37:31 +00:00
feat: enable otp email and sms (#6260)
* feat: enable otp email and sms * feat: enable otp factors in login settings * remove tests without value * translate second factors * don't add new factors yet * add comment * add factors to docs * backward compatible settings api * compile tests * add available 2fa types * test: add mapping tests --------- Co-authored-by: Livio Spring <livio.a@gmail.com>
This commit is contained in:
@@ -115,11 +115,11 @@ func (p *loginPolicyProjection) reducers() []handler.AggregateReducer {
|
||||
},
|
||||
{
|
||||
Event: org.LoginPolicySecondFactorAddedEventType,
|
||||
Reduce: p.reduce2FAAdded,
|
||||
Reduce: p.reduceSecondFactorAdded,
|
||||
},
|
||||
{
|
||||
Event: org.LoginPolicySecondFactorRemovedEventType,
|
||||
Reduce: p.reduce2FARemoved,
|
||||
Reduce: p.reduceSecondFactorRemoved,
|
||||
},
|
||||
{
|
||||
Event: org.OrgRemovedEventType,
|
||||
@@ -148,11 +148,11 @@ func (p *loginPolicyProjection) reducers() []handler.AggregateReducer {
|
||||
},
|
||||
{
|
||||
Event: instance.LoginPolicySecondFactorAddedEventType,
|
||||
Reduce: p.reduce2FAAdded,
|
||||
Reduce: p.reduceSecondFactorAdded,
|
||||
},
|
||||
{
|
||||
Event: instance.LoginPolicySecondFactorRemovedEventType,
|
||||
Reduce: p.reduce2FARemoved,
|
||||
Reduce: p.reduceSecondFactorRemoved,
|
||||
},
|
||||
{
|
||||
Event: instance.InstanceRemovedEventType,
|
||||
@@ -345,7 +345,7 @@ func (p *loginPolicyProjection) reduceLoginPolicyRemoved(event eventstore.Event)
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *loginPolicyProjection) reduce2FAAdded(event eventstore.Event) (*handler.Statement, error) {
|
||||
func (p *loginPolicyProjection) reduceSecondFactorAdded(event eventstore.Event) (*handler.Statement, error) {
|
||||
var policyEvent policy.SecondFactorAddedEvent
|
||||
switch e := event.(type) {
|
||||
case *instance.LoginPolicySecondFactorAddedEvent:
|
||||
@@ -370,7 +370,7 @@ func (p *loginPolicyProjection) reduce2FAAdded(event eventstore.Event) (*handler
|
||||
), nil
|
||||
}
|
||||
|
||||
func (p *loginPolicyProjection) reduce2FARemoved(event eventstore.Event) (*handler.Statement, error) {
|
||||
func (p *loginPolicyProjection) reduceSecondFactorRemoved(event eventstore.Event) (*handler.Statement, error) {
|
||||
var policyEvent policy.SecondFactorRemovedEvent
|
||||
switch e := event.(type) {
|
||||
case *instance.LoginPolicySecondFactorRemovedEvent:
|
||||
|
@@ -310,8 +310,8 @@ func TestLoginPolicyProjection_reduces(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "org reduce2FAAdded",
|
||||
reduce: (&loginPolicyProjection{}).reduce2FAAdded,
|
||||
name: "org reduceSecondFactorAdded",
|
||||
reduce: (&loginPolicyProjection{}).reduceSecondFactorAdded,
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(org.LoginPolicySecondFactorAddedEventType),
|
||||
@@ -342,8 +342,8 @@ func TestLoginPolicyProjection_reduces(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "org reduce2FARemoved",
|
||||
reduce: (&loginPolicyProjection{}).reduce2FARemoved,
|
||||
name: "org reduceSecondFactorRemoved",
|
||||
reduce: (&loginPolicyProjection{}).reduceSecondFactorRemoved,
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(org.LoginPolicySecondFactorRemovedEventType),
|
||||
@@ -558,8 +558,8 @@ func TestLoginPolicyProjection_reduces(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "instance reduce2FAAdded",
|
||||
reduce: (&loginPolicyProjection{}).reduce2FAAdded,
|
||||
name: "instance reduceSecondFactorAdded u2f",
|
||||
reduce: (&loginPolicyProjection{}).reduceSecondFactorAdded,
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(instance.LoginPolicySecondFactorAddedEventType),
|
||||
@@ -590,8 +590,8 @@ func TestLoginPolicyProjection_reduces(t *testing.T) {
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "instance reduce2FARemoved",
|
||||
reduce: (&loginPolicyProjection{}).reduce2FARemoved,
|
||||
name: "instance reduceSecondFactorRemoved u2f",
|
||||
reduce: (&loginPolicyProjection{}).reduceSecondFactorRemoved,
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(instance.LoginPolicySecondFactorRemovedEventType),
|
||||
@@ -621,6 +621,70 @@ func TestLoginPolicyProjection_reduces(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "instance reduceSecondFactorAdded otp email",
|
||||
reduce: (&loginPolicyProjection{}).reduceSecondFactorAdded,
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(instance.LoginPolicySecondFactorAddedEventType),
|
||||
instance.AggregateType,
|
||||
[]byte(`{
|
||||
"mfaType": 3
|
||||
}`),
|
||||
), instance.SecondFactorAddedEventMapper),
|
||||
},
|
||||
want: wantReduce{
|
||||
aggregateType: eventstore.AggregateType("instance"),
|
||||
sequence: 15,
|
||||
previousSequence: 10,
|
||||
executer: &testExecuter{
|
||||
executions: []execution{
|
||||
{
|
||||
expectedStmt: "UPDATE projections.login_policies5 SET (change_date, sequence, second_factors) = ($1, $2, array_append(second_factors, $3)) WHERE (aggregate_id = $4) AND (instance_id = $5)",
|
||||
expectedArgs: []interface{}{
|
||||
anyArg{},
|
||||
uint64(15),
|
||||
domain.SecondFactorTypeOTPEmail,
|
||||
"agg-id",
|
||||
"instance-id",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "instance reduceSecondFactorRemoved otp email",
|
||||
reduce: (&loginPolicyProjection{}).reduceSecondFactorRemoved,
|
||||
args: args{
|
||||
event: getEvent(testEvent(
|
||||
repository.EventType(instance.LoginPolicySecondFactorRemovedEventType),
|
||||
instance.AggregateType,
|
||||
[]byte(`{
|
||||
"mfaType": 3
|
||||
}`),
|
||||
), instance.SecondFactorRemovedEventMapper),
|
||||
},
|
||||
want: wantReduce{
|
||||
aggregateType: eventstore.AggregateType("instance"),
|
||||
sequence: 15,
|
||||
previousSequence: 10,
|
||||
executer: &testExecuter{
|
||||
executions: []execution{
|
||||
{
|
||||
expectedStmt: "UPDATE projections.login_policies5 SET (change_date, sequence, second_factors) = ($1, $2, array_remove(second_factors, $3)) WHERE (aggregate_id = $4) AND (instance_id = $5)",
|
||||
expectedArgs: []interface{}{
|
||||
anyArg{},
|
||||
uint64(15),
|
||||
domain.SecondFactorTypeOTPEmail,
|
||||
"agg-id",
|
||||
"instance-id",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "org.reduceOwnerRemoved",
|
||||
reduce: (&loginPolicyProjection{}).reduceOwnerRemoved,
|
||||
|
Reference in New Issue
Block a user