/// <summary> /// Challenges <paramref name="info"/> to identify a guest actor. /// Note that a successful challenge may have side effects. /// </summary> /// <param name="ctx">The call context to use.</param> /// <param name="info">The payload to challenge.</param> /// <param name="actualLogin">Set it to false to avoid login side effect (such as updating the LastLoginTime) on success.</param> /// <returns>The <see cref="LoginResult"/>.</returns> public LoginResult LoginGuestActor(ISqlCallContext ctx, IGuestActorInfo info, bool actualLogin = true) { var mode = actualLogin ? UCLMode.UpdateOnly | UCLMode.WithActualLogin : UCLMode.UpdateOnly | UCLMode.WithCheckLogin; var result = GuestActorUCL(ctx, 1, 0, info, mode); return(result.LoginResult); }
protected abstract UCLResult GuestActorUCL(ISqlCallContext ctx, int actorId, int userId, [ParameterSource] IGuestActorInfo info, UCLMode mode);
/// <summary> /// Creates or updates a guest actor entry. /// This is the "binding actor feature" since it binds a guest actor to an already existing actor. /// When both an <paramref name="guestActorId"/> and <see cref="IGuestActorInfo.Token"/> are provided /// they must match otherwise an exception will be thrown. /// Otherwise, if no <see cref="IGuestActorInfo.Token"/> is provider then the <paramref name="guestActorId"/> /// will be bound to a new guest actor, if no binding currently exists. If no <paramref name="guestActorId"/> /// is provided a new one will be created. /// </summary> /// <param name="ctx">The call context to use.</param> /// <param name="actorId">The acting actor identifier.</param> /// <param name="guestActorId">The guest actor identifier that must be registered.</param> /// <param name="info">Provider specific data: the <see cref="IGuestActorInfo"/> poco.</param> /// <param name="mode">Optionally configures Create, Update only or WithLogin behavior.</param> /// <returns>The <see cref="UCLResult"/>.</returns> public UCLResult CreateOrUpdateGuestActor(ISqlCallContext ctx, int actorId, int guestActorId, IGuestActorInfo info, UCLMode mode = UCLMode.CreateOrUpdate) => GuestActorUCL(ctx, actorId, guestActorId, info, mode);