Изменение атрибутов#
Blitz Identity Provider позволяет изменять атрибуты учетной записи из процедуры входа. Для этого необходимо импортировать интерфейс com.identityblitz.idp.extensions.types.JsObject
и использовать методы:
добавление атрибутов:
public final Builder addAttrs(final JsObject attrs)
удаление атрибутов:
public final Builder removeAttrs(final List<String> attrNames)
Пример импорта и вызова методов:
import com.identityblitz.idp.extensions.types.JsObject;
/* список для удаления атрибутов */
ArrayList<String> del = new ArrayList<String>();
del.add("mail");
del.add("mobile");
/* для обновления атрибутов */
JsObject attrs = JsObject.empty;
attrs = attrs.addString("surname", "surname");
attrs = attrs.addBoolean("locked", false);
attrs = attrs.addLong("dname", 1L);
return StrategyState.ENOUGH_BUILDER().addAttrs(attrs).removeAttrs(del).build();
Пример процедуры входа с изменением атрибутов lastLoginBy и consent:
package com.identityblitz.idp.flow.dynamic;
import java.lang.*;
import java.util.*;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import com.identityblitz.idp.login.authn.flow.Context;
import com.identityblitz.idp.login.authn.flow.Strategy;
import com.identityblitz.idp.login.authn.flow.StrategyState;
import com.identityblitz.idp.login.authn.flow.StrategyBeginState;
import com.identityblitz.idp.flow.dynamic.*;
import com.identityblitz.idp.extensions.types.JsObject;
import com.identityblitz.idp.login.authn.flow.Enough;
import static com.identityblitz.idp.login.authn.flow.StrategyState.*;
public class FFmethods implements Strategy {
private final Logger logger = LoggerFactory.getLogger("com.identityblitz.idp.flow.dynamic");
@Override public StrategyBeginState begin(final Context ctx) {
if(ctx.claims("subjectId") != null)
return StrategyState.ENOUGH();
else
return StrategyState.MORE(new String[]{});
}
@Override public StrategyState next(final Context ctx) {
JsObject attrs = JsObject.empty;
if (ctx.appId().toString().startsWith("dyn~")) {
lastLoginBy = "mobile";
} else {
lastLoginBy = "web";
}
attrs = attrs.addString("lastLoginBy", lastLoginBy);
attrs = attrs.addBoolean("consent", true);
Integer reqFactor = (ctx.user() == null) ? null : ctx.user().requiredFactor();
if(reqFactor == null || reqFactor == 0) {
Enough.Builder en_builder = StrategyState.ENOUGH_BUILDER().addAttrs(attrs);
return en_builder.build();
} else {
if(reqFactor == ctx.justCompletedFactor()) {
Enough.Builder en_builder = StrategyState.ENOUGH_BUILDER().addAttrs(attrs);
return en_builder.build();
} else
return StrategyState.MORE(new String[]{});
}
}
}