Skip to content

Commit

Permalink
Add new authenticator property.
Browse files Browse the repository at this point in the history
  • Loading branch information
Thisara-Welmilla committed Sep 25, 2024
1 parent a53a831 commit c378bdb
Show file tree
Hide file tree
Showing 13 changed files with 380 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.wso2.carbon.identity.application.common.model.ServiceProvider;
import org.wso2.carbon.identity.application.common.model.script.AuthenticationScriptConfig;
import org.wso2.carbon.identity.application.mgt.ApplicationConstants;
import org.wso2.carbon.identity.base.IdentityConstants;

import java.util.ArrayList;
import java.util.Collections;
Expand Down Expand Up @@ -160,11 +161,13 @@ private AuthenticationStep buildAuthenticationStep(AuthenticationStepModel stepM
LocalAuthenticatorConfig localAuthOption = new LocalAuthenticatorConfig();
localAuthOption.setEnabled(true);
localAuthOption.setName(option.getAuthenticator());
localAuthOption.setDefinedByType(IdentityConstants.DefinedByType.SYSTEM);
localAuthOptions.add(localAuthOption);
} else {
FederatedAuthenticatorConfig federatedAuthConfig = new FederatedAuthenticatorConfig();
federatedAuthConfig.setEnabled(true);
federatedAuthConfig.setName(option.getAuthenticator());
federatedAuthConfig.setDefinedByType(IdentityConstants.DefinedByType.SYSTEM);

IdentityProvider federatedIdp = new IdentityProvider();
federatedIdp.setIdentityProviderName(option.getIdp());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,40 @@ public class Authenticator {
private String displayName;
private Boolean isEnabled;

@XmlType(name="DefinedByEnum")
@XmlEnum(String.class)
public enum DefinedByEnum {

@XmlEnumValue("SYSTEM") SYSTEM(String.valueOf("SYSTEM")), @XmlEnumValue("USER") USER(String.valueOf("USER"));


private String value;

DefinedByEnum(String v) {
value = v;
}

public String value() {
return value;
}

@Override
public String toString() {
return String.valueOf(value);
}

public static DefinedByEnum fromValue(String value) {
for (DefinedByEnum b : DefinedByEnum.values()) {
if (b.value.equals(value)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + value + "'");
}
}

private DefinedByEnum definedBy;

@XmlType(name="TypeEnum")
@XmlEnum(String.class)
public enum TypeEnum {
Expand Down Expand Up @@ -148,6 +182,24 @@ public void setIsEnabled(Boolean isEnabled) {
this.isEnabled = isEnabled;
}

/**
**/
public Authenticator definedBy(DefinedByEnum definedBy) {

this.definedBy = definedBy;
return this;
}

@ApiModelProperty(value = "")
@JsonProperty("definedBy")
@Valid
public DefinedByEnum getDefinedBy() {
return definedBy;
}
public void setDefinedBy(DefinedByEnum definedBy) {
this.definedBy = definedBy;
}

/**
**/
public Authenticator type(TypeEnum type) {
Expand Down Expand Up @@ -262,6 +314,7 @@ public boolean equals(java.lang.Object o) {
Objects.equals(this.name, authenticator.name) &&
Objects.equals(this.displayName, authenticator.displayName) &&
Objects.equals(this.isEnabled, authenticator.isEnabled) &&
Objects.equals(this.definedBy, authenticator.definedBy) &&
Objects.equals(this.type, authenticator.type) &&
Objects.equals(this.image, authenticator.image) &&
Objects.equals(this.description, authenticator.description) &&
Expand All @@ -271,7 +324,7 @@ public boolean equals(java.lang.Object o) {

@Override
public int hashCode() {
return Objects.hash(id, name, displayName, isEnabled, type, image, description, tags, self);
return Objects.hash(id, name, displayName, isEnabled, definedBy, type, image, description, tags, self);
}

@Override
Expand All @@ -284,6 +337,7 @@ public String toString() {
sb.append(" name: ").append(toIndentedString(name)).append("\n");
sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n");
sb.append(" isEnabled: ").append(toIndentedString(isEnabled)).append("\n");
sb.append(" definedBy: ").append(toIndentedString(definedBy)).append("\n");
sb.append(" type: ").append(toIndentedString(type)).append("\n");
sb.append(" image: ").append(toIndentedString(image)).append("\n");
sb.append(" description: ").append(toIndentedString(description)).append("\n");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import org.wso2.carbon.identity.application.common.model.IdentityProvider;
import org.wso2.carbon.identity.application.common.model.LocalAuthenticatorConfig;
import org.wso2.carbon.identity.application.common.model.RequestPathAuthenticatorConfig;
import org.wso2.carbon.identity.base.IdentityConstants;
import org.wso2.carbon.identity.base.IdentityException;
import org.wso2.carbon.identity.core.model.ExpressionNode;
import org.wso2.carbon.identity.core.model.FilterTreeBuilder;
Expand Down Expand Up @@ -421,6 +422,13 @@ private void addIdp(IdentityProvider identityProvider, List<Authenticator> authe
authenticator.setType(Authenticator.TypeEnum.FEDERATED);
authenticator.setImage(identityProvider.getImageUrl());
authenticator.setDescription(identityProvider.getIdentityProviderDescription());
if (identityProvider.getFederatedAuthenticatorConfigs().length == 1) {
IdentityConstants.DefinedByType definedByType =
identityProvider.getFederatedAuthenticatorConfigs()[0].getDefinedByType();
authenticator.definedBy(Authenticator.DefinedByEnum.valueOf(definedByType.toString()));
} else {
authenticator.definedBy(Authenticator.DefinedByEnum.SYSTEM);
}
if (CollectionUtils.isNotEmpty(configTagsListDistinct)) {
authenticator.setTags(configTagsListDistinct);
}
Expand Down Expand Up @@ -512,6 +520,7 @@ private Authenticator addLocalAuthenticator(LocalAuthenticatorConfig config) {
authenticator.setDisplayName(config.getDisplayName());
authenticator.setIsEnabled(config.isEnabled());
authenticator.setType(Authenticator.TypeEnum.LOCAL);
authenticator.definedBy(Authenticator.DefinedByEnum.valueOf(config.getDefinedByType().toString()));
String[] tags = config.getTags();
if (ArrayUtils.isNotEmpty(tags)) {
authenticator.setTags(Arrays.asList(tags));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,11 @@ components:
isEnabled:
type: boolean
example: true
definedBy:
type: string
enum:
- SYSTEM
- USER
type:
type: string
enum:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,40 @@ public class Authenticator {
private String displayName;
private Boolean isEnabled = true;

@XmlType(name="DefinedByEnum")
@XmlEnum(String.class)
public enum DefinedByEnum {

@XmlEnumValue("SYSTEM") SYSTEM(String.valueOf("SYSTEM")), @XmlEnumValue("USER") USER(String.valueOf("USER"));


private String value;

DefinedByEnum(String v) {
value = v;
}

public String value() {
return value;
}

@Override
public String toString() {
return String.valueOf(value);
}

public static DefinedByEnum fromValue(String value) {
for (DefinedByEnum b : DefinedByEnum.values()) {
if (b.value.equals(value)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + value + "'");
}
}

private DefinedByEnum definedBy;

@XmlType(name="TypeEnum")
@XmlEnum(String.class)
public enum TypeEnum {
Expand Down Expand Up @@ -152,6 +186,24 @@ public void setIsEnabled(Boolean isEnabled) {
this.isEnabled = isEnabled;
}

/**
**/
public Authenticator definedBy(DefinedByEnum definedBy) {

this.definedBy = definedBy;
return this;
}

@ApiModelProperty(value = "")
@JsonProperty("definedBy")
@Valid
public DefinedByEnum getDefinedBy() {
return definedBy;
}
public void setDefinedBy(DefinedByEnum definedBy) {
this.definedBy = definedBy;
}

/**
**/
public Authenticator type(TypeEnum type) {
Expand Down Expand Up @@ -238,14 +290,15 @@ public boolean equals(java.lang.Object o) {
Objects.equals(this.name, authenticator.name) &&
Objects.equals(this.displayName, authenticator.displayName) &&
Objects.equals(this.isEnabled, authenticator.isEnabled) &&
Objects.equals(this.definedBy, authenticator.definedBy) &&
Objects.equals(this.type, authenticator.type) &&
Objects.equals(this.tags, authenticator.tags) &&
Objects.equals(this.properties, authenticator.properties);
}

@Override
public int hashCode() {
return Objects.hash(id, name, displayName, isEnabled, type, tags, properties);
return Objects.hash(id, name, displayName, isEnabled, definedBy, type, tags, properties);
}

@Override
Expand All @@ -258,6 +311,7 @@ public String toString() {
sb.append(" name: ").append(toIndentedString(name)).append("\n");
sb.append(" displayName: ").append(toIndentedString(displayName)).append("\n");
sb.append(" isEnabled: ").append(toIndentedString(isEnabled)).append("\n");
sb.append(" definedBy: ").append(toIndentedString(definedBy)).append("\n");
sb.append(" type: ").append(toIndentedString(type)).append("\n");
sb.append(" tags: ").append(toIndentedString(tags)).append("\n");
sb.append(" properties: ").append(toIndentedString(properties)).append("\n");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -770,6 +770,7 @@ private Authenticator buildAuthenticatorResponse(LocalAuthenticatorConfig config
authenticator.setId(base64URLEncode(config.getName()));
authenticator.setName(config.getName());
authenticator.setDisplayName(config.getDisplayName());
authenticator.setDefinedBy(Authenticator.DefinedByEnum.valueOf(config.getDefinedByType().toString()));
authenticator.setIsEnabled(config.isEnabled());
if (config instanceof RequestPathAuthenticatorConfig) {
authenticator.setType(Authenticator.TypeEnum.REQUEST_PATH);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1217,6 +1217,11 @@ components:
isEnabled:
type: boolean
default: true
definedBy:
type: string
enum:
- SYSTEM
- USER
type:
type: string
enum:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,40 @@ public class FederatedAuthenticator {
private String authenticatorId;
private String name;
private Boolean isEnabled = false;

@XmlType(name="DefinedByEnum")
@XmlEnum(String.class)
public enum DefinedByEnum {

@XmlEnumValue("SYSTEM") SYSTEM(String.valueOf("SYSTEM")), @XmlEnumValue("USER") USER(String.valueOf("USER"));


private String value;

DefinedByEnum(String v) {
value = v;
}

public String value() {
return value;
}

@Override
public String toString() {
return String.valueOf(value);
}

public static DefinedByEnum fromValue(String value) {
for (DefinedByEnum b : DefinedByEnum.values()) {
if (b.value.equals(value)) {
return b;
}
}
throw new IllegalArgumentException("Unexpected value '" + value + "'");
}
}

private DefinedByEnum definedBy;
private Boolean isDefault = false;
private List<String> tags = null;

Expand Down Expand Up @@ -98,6 +132,24 @@ public void setIsEnabled(Boolean isEnabled) {
this.isEnabled = isEnabled;
}

/**
**/
public FederatedAuthenticator definedBy(DefinedByEnum definedBy) {

this.definedBy = definedBy;
return this;
}

@ApiModelProperty(value = "")
@JsonProperty("definedBy")
@Valid
public DefinedByEnum getDefinedBy() {
return definedBy;
}
public void setDefinedBy(DefinedByEnum definedBy) {
this.definedBy = definedBy;
}

/**
**/
public FederatedAuthenticator isDefault(Boolean isDefault) {
Expand Down Expand Up @@ -183,14 +235,15 @@ public boolean equals(java.lang.Object o) {
return Objects.equals(this.authenticatorId, federatedAuthenticator.authenticatorId) &&
Objects.equals(this.name, federatedAuthenticator.name) &&
Objects.equals(this.isEnabled, federatedAuthenticator.isEnabled) &&
Objects.equals(this.definedBy, federatedAuthenticator.definedBy) &&
Objects.equals(this.isDefault, federatedAuthenticator.isDefault) &&
Objects.equals(this.tags, federatedAuthenticator.tags) &&
Objects.equals(this.properties, federatedAuthenticator.properties);
}

@Override
public int hashCode() {
return Objects.hash(authenticatorId, name, isEnabled, isDefault, tags, properties);
return Objects.hash(authenticatorId, name, isEnabled, definedBy, isDefault, tags, properties);
}

@Override
Expand All @@ -202,6 +255,7 @@ public String toString() {
sb.append(" authenticatorId: ").append(toIndentedString(authenticatorId)).append("\n");
sb.append(" name: ").append(toIndentedString(name)).append("\n");
sb.append(" isEnabled: ").append(toIndentedString(isEnabled)).append("\n");
sb.append(" definedBy: ").append(toIndentedString(definedBy)).append("\n");
sb.append(" isDefault: ").append(toIndentedString(isDefault)).append("\n");
sb.append(" tags: ").append(toIndentedString(tags)).append("\n");
sb.append(" properties: ").append(toIndentedString(properties)).append("\n");
Expand Down
Loading

0 comments on commit c378bdb

Please sign in to comment.