/// <summary>
        /// Invites a player to join a group
        /// </summary>
        public static void InviteToGroup(InviteToGroupRequest request, Action <InviteToGroupResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            var context = (request == null ? null : request.AuthenticationContext) ?? PlayFabSettings.staticPlayer;


            PlayFabHttp.MakeApiCall("/Group/InviteToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context);
        }
예제 #2
0
        public void InviteToGroup(string groupId, EntityKey entityKey)
        {
            // A player-controlled entity invites another player-controlled entity to an existing group
            var request = new InviteToGroupRequest {
                Group = EntityKeyMaker(groupId), Entity = entityKey
            };

            PlayFabGroupsAPI.InviteToGroup(request, OnInvite, OnSharedError);
        }
        public async Task <IActionResult> Invite([FromRoute] string groupId, [FromBody] InviteToGroupRequest inviteToGroupRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            Core.Models.Result.Result result = await _inviteService.InviteToGroup(groupId, inviteToGroupRequest);

            return(result.ToNewResult().ToApiResult());
        }
        /// <summary>
        /// Invites a player to join a group
        /// </summary>
        public void InviteToGroup(InviteToGroupRequest request, Action <InviteToGroupResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            var context      = (request == null ? null : request.AuthenticationContext) ?? authenticationContext;
            var callSettings = apiSettings ?? PlayFabSettings.staticSettings;

            if (!context.IsEntityLoggedIn())
            {
                throw new PlayFabException(PlayFabExceptionCode.NotLoggedIn, "Must be logged in to call this method");
            }
            PlayFabHttp.MakeApiCall("/Group/InviteToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders, context, callSettings, this);
        }
예제 #5
0
        public async Task <Core.Models.Result.Result> InviteToGroup(string groupId, InviteToGroupRequest inviteToGroupRequest)
        {
            _logger.LogInformation($"Adding new group invite");

            ValidationResult validationResult = _inviteToGroupRequestValidator.Validate(inviteToGroupRequest);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invalid {nameof(InviteToGroupRequest)} model");
                return(Result.Fail(validationResult.ToResultError()).ToOldResult());
            }

            return((await AddInvite(inviteToGroupRequest.Email, null, groupId, inviteToGroupRequest.GroupRoleId)).ToOldResult());
        }
        public async Task <IActionResult> Invite([FromRoute] string groupId, [FromBody] InviteToGroupRequest inviteToGroupRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            Result result = await _inviteService.InviteToGroup(groupId, inviteToGroupRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
예제 #7
0
        /// <summary>
        /// Invites a player to join a group
        /// </summary>
        /// <param name="AutoAcceptOutstandingApplication">Optional, default true. Automatically accept an application if one exists instead of creating an invitation (Optional)</param>
        /// <param name="Entity">The entity to perform this action on. (Required)</param>
        /// <param name="Group">The identifier of the group (Required)</param>
        /// <param name="RoleId">Optional. ID of an existing a role in the group to assign the user to. The group's default member role is used if this is not specified. Role IDs must be between 1 and 64 characters long. (Optional)</param>
        public static Task <InviteToGroupResponse> InviteToGroup(EntityKey Entity, EntityKey Group, bool?AutoAcceptOutstandingApplication = default, string RoleId = default,
                                                                 PlayFabAuthenticationContext customAuthContext = null, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            InviteToGroupRequest request = new InviteToGroupRequest()
            {
                Entity = Entity,
                Group  = Group,
                AutoAcceptOutstandingApplication = AutoAcceptOutstandingApplication,
                RoleId = RoleId,
            };

            var context = GetContext(customAuthContext);

            return(PlayFabHttp.MakeApiCallAsync <InviteToGroupResponse>("/Group/InviteToGroup", request,
                                                                        AuthType.EntityToken,
                                                                        customData, extraHeaders, context));
        }
예제 #8
0
    public void InvitePlayerToGroup(string adminUsername, string password, string groupName, string usernameToAdd)
    {
        var loginWithPlayFabRequest = new LoginWithPlayFabRequest {
            Username = adminUsername, Password = password
        };

        PlayFabClientAPI.LoginWithPlayFab(loginWithPlayFabRequest,
                                          delegate(LoginResult loginResult)
        {
            var getGroupRequest = new GetGroupRequest()
            {
                GroupName = groupName
            };

            PlayFabGroupsAPI.GetGroup(getGroupRequest,
                                      delegate(GetGroupResponse getGroupResponse)
            {
                var getAccountInfoRequest = new GetAccountInfoRequest()
                {
                    Username = usernameToAdd
                };

                PlayFabClientAPI.GetAccountInfo(getAccountInfoRequest,
                                                delegate(GetAccountInfoResult getAccountInfoResult)
                {
                    var inviteToGroupRequest = new InviteToGroupRequest()
                    {
                        Group  = getGroupResponse.Group,
                        Entity = ConvertEntityKey(getAccountInfoResult.AccountInfo.TitleInfo.TitlePlayerAccount)
                    };

                    PlayFabGroupsAPI.InviteToGroup(inviteToGroupRequest,
                                                   delegate(InviteToGroupResponse inviteToGroupResponse)
                    {
                        Debug.Log("Admin username: "******" successfully added username: "******" to group: " + groupName);
                    },
                                                   SharedError.OnSharedError);
                },
                                                SharedError.OnSharedError);
            },
                                      SharedError.OnSharedError);
        },
                                          SharedError.OnSharedError);
    }
예제 #9
0
        public Task <Result> InviteToGroup(string groupId, InviteToGroupRequest inviteToGroupRequest)
        {
            _logger.LogInformation($"Adding new group invite");

            ValidationResult validationResult = _inviteToGroupRequestValidator.Validate(inviteToGroupRequest);

            if (!validationResult.IsValid)
            {
                _logger.LogWarning($"Invalid {nameof(InviteToGroupRequest)} model");
                return(Task.FromResult(Result.Fail(validationResult.Errors)));
            }

            Result canInviteResult = CanInvite(inviteToGroupRequest.Email);

            if (canInviteResult.Failure)
            {
                return(Task.FromResult(Result.Fail(canInviteResult.Errors)));
            }

            Result isGroupInviteValid = IsGroupInviteValid(groupId, inviteToGroupRequest.GroupRoleId);

            if (isGroupInviteValid.Failure)
            {
                return(Task.FromResult(Result.Fail(isGroupInviteValid.Errors)));
            }

            InviteEntity inviteEntity = new InviteEntity(
                email: inviteToGroupRequest.Email,
                token: StringUtils.GenerateToken(),
                status: Data.Enums.Entity.InviteStatuses.Pending,
                roleId: null,
                groupId: groupId,
                groupRoleId: inviteToGroupRequest.GroupRoleId,
                expiresAt: DateTimeOffset.UtcNow.Add(_identityManagementEndpoints.InviteValidForTimeSpan));

            return(AddInvite(inviteEntity));
        }
        /// <summary>
        /// Invites a player to join a group
        /// </summary>
        public static async Task <PlayFabResult <InviteToGroupResponse> > InviteToGroupAsync(InviteToGroupRequest request, object customData = null, Dictionary <string, string> extraHeaders = null)
        {
            if ((request?.AuthenticationContext?.EntityToken ?? PlayFabSettings.staticPlayer.EntityToken) == null)
            {
                throw new PlayFabException(PlayFabExceptionCode.EntityTokenNotSet, "Must call GetEntityToken before calling this method");
            }


            var httpResult = await PlayFabHttp.DoPost("/Group/InviteToGroup", request, "X-EntityToken", PlayFabSettings.staticPlayer.EntityToken, extraHeaders);

            if (httpResult is PlayFabError)
            {
                var error = (PlayFabError)httpResult;
                PlayFabSettings.GlobalErrorHandler?.Invoke(error);
                return(new PlayFabResult <InviteToGroupResponse> {
                    Error = error, CustomData = customData
                });
            }

            var resultRawJson = (string)httpResult;
            var resultData    = PluginManager.GetPlugin <ISerializerPlugin>(PluginContract.PlayFab_Serializer).DeserializeObject <PlayFabJsonSuccess <InviteToGroupResponse> >(resultRawJson);
            var result        = resultData.data;

            return(new PlayFabResult <InviteToGroupResponse> {
                Result = result, CustomData = customData
            });
        }
예제 #11
0
 /// <summary>
 /// Invites a player to join a group
 /// </summary>
 public static void InviteToGroup(InviteToGroupRequest request, Action <InviteToGroupResponse> resultCallback, Action <PlayFabError> errorCallback, object customData = null, Dictionary <string, string> extraHeaders = null)
 {
     PlayFabHttp.MakeApiCall("/Group/InviteToGroup", request, AuthType.EntityToken, resultCallback, errorCallback, customData, extraHeaders);
 }
예제 #12
0
        public async Task <IActionResult> Add([FromRoute] string groupId, [FromBody] InviteToGroupRequest request)
        {
            Core.Models.Result.Result result = await _inviteService.InviteToGroup(groupId, request);

            return(result.ToNewResult().ToApiResult());
        }