public async Task <RawJwtToken> SignUp(IOperation operation, UserRegistrationEntity entity)
        {
            if (await userDataStore.GetUserIdentityClaimsByAccessData(operation, entity.Email) != null)
            {
                throw CommonExceptions.UserHasAlreadyExist(operation);
            }

            var user = await userDataStore.CreateUser(operation, entity);

            if (user == null)
            {
                throw CommonExceptions.RegistrationIsFailed(operation);
            }

            var identity = GetIdentity(user);

            var token = new RawJwtToken
            {
                AccessToken  = GenerateAccessToken(identity.Claims.ToList()),
                RefreshToken = AuthenticationUtils.GenerateRefreshToken()
            };

            await userDataStore.AddRefreshToken(operation, user.Id, token.RefreshToken);

            return(token);
        }