コード例 #1
0
        protected void CreateUser_Click(Object sender, EventArgs e)
        {
            // Create a user. I made a small Keycloak object User class based on the Keycloak documentation
            // This can be done the same way for all the Keycloak Administration API objects.
            // http://www.keycloak.org/docs-api/3.1/rest-api/index.html
            var userRepresentation = new UserRepresentation
            {
                username  = "******",
                firstName = "Force",
                lastName  = "Account",
                enabled   = true
            };

            // Just like the CreateUserRepresentation call, every Administration API call needs an access token from a
            // user with admin rights or use this client's service account and give it admin rights.
            var response = KeycloakHelpers.CreateUserRepresentation(userRepresentation, Context);

            if (response.IsSuccessStatusCode)
            {
                User = KeycloakHelpers.GetUserRepresentation(Context);

                // Here I add metadata to a user. this can for example be used when a contract is created. The contract id
                // can then be stored in the user's metadata.
                User.attributes.Add("contractId", new [] { "12345" });
                var updatedUser = KeycloakHelpers.UpdateUserRepresentation(User, Context);
            }
        }
コード例 #2
0
        // POST users
        public IHttpActionResult Post(UserRepresentation value)
        {
            User user;

            try
            {
                user = new User()
                {
                    Name = value.Name
                };
            }
            catch
            {
                return(BadRequest());
            }

            db.Users.Add(user);
            db.SaveChanges();

            return(CreatedAtRoute("DefaultApi", new { id = user.Id }, new UserRepresentation()
            {
                Id = user.Id,
                Name = user.Name
            }));
        }
コード例 #3
0
    public static void CreateUserAssetFile()
    {
        UserRepresentation asset = QuickSheet.CustomAssetUtility.CreateAsset <UserRepresentation>();

        asset.SheetName     = "HOX";
        asset.WorksheetName = "User";
        EditorUtility.SetDirty(asset);
    }
コード例 #4
0
 public RestSnapshot(IOidStrategy oidStrategy, IPrincipal user, HttpRequestMessage req, RestControlFlags flags)
     : this(oidStrategy, req, true)
 {
     populator = () => {
         Representation = UserRepresentation.Create(oidStrategy, req, user, flags);
         SetHeaders();
     };
 }
コード例 #5
0
        /// <summary>
        /// Update User Profile This will update the profile associated to the current token. [user] role required
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body"> (optional)</param>
        /// <returns>Task of ApiResponse (UserRepresentation)</returns>
        public async System.Threading.Tasks.Task <ApiResponse <UserRepresentation> > CurrentUserAsyncWithHttpInfo(UserRepresentation body = null)
        {
            var    localVarPath         = "/api/profile";
            var    localVarPathParams   = new Dictionary <String, String>();
            var    localVarQueryParams  = new List <KeyValuePair <String, String> >();
            var    localVarHeaderParams = new Dictionary <String, String>(Configuration.DefaultHeader);
            var    localVarFormParams   = new Dictionary <String, String>();
            var    localVarFileParams   = new Dictionary <String, FileParameter>();
            Object localVarPostBody     = null;

            // to determine the Content-Type header
            String[] localVarHttpContentTypes = new String[] {
                "application/json"
            };
            String localVarHttpContentType = Configuration.ApiClient.SelectHeaderContentType(localVarHttpContentTypes);

            // to determine the Accept header
            String[] localVarHttpHeaderAccepts = new String[] {
                "application/json"
            };
            String localVarHttpHeaderAccept = Configuration.ApiClient.SelectHeaderAccept(localVarHttpHeaderAccepts);

            if (localVarHttpHeaderAccept != null)
            {
                localVarHeaderParams.Add("Accept", localVarHttpHeaderAccept);
            }

            if (body != null && body.GetType() != typeof(byte[]))
            {
                localVarPostBody = Configuration.ApiClient.Serialize(body); // http body (model) parameter
            }
            else
            {
                localVarPostBody = body; // byte array
            }


            // make the HTTP request
            IRestResponse localVarResponse = (IRestResponse)await Configuration.ApiClient.CallApiAsync(localVarPath,
                                                                                                       Method.PUT, localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarFileParams,
                                                                                                       localVarPathParams, localVarHttpContentType);

            int localVarStatusCode = (int)localVarResponse.StatusCode;

            if (ExceptionFactory != null)
            {
                Exception exception = ExceptionFactory("CurrentUser", localVarResponse);
                if (exception != null)
                {
                    throw exception;
                }
            }

            return(new ApiResponse <UserRepresentation>(localVarStatusCode,
                                                        localVarResponse.Headers.ToDictionary(x => x.Name, x => x.Value.ToString()),
                                                        (UserRepresentation)Configuration.ApiClient.Deserialize(localVarResponse, typeof(UserRepresentation))));
        }
コード例 #6
0
        public ActionResult <UserRepresentation> Create(User user)
        {
            // validate email
            if (!Utils.IsValidEmail(user.Email))
            {
                return(BadRequest(new ValidationResult("email", "Invalid email address")));
            }

            // validate password
            string passwordValidationMessage;

            if (!Utils.IsValidPassword(user.Password, out passwordValidationMessage))
            {
                return(BadRequest(new ValidationResult("password", passwordValidationMessage)));
            }

            User existsUser = Program.MedialynxData.userDBAPI.GetByEmail(user.Email);

            if (user != null)
            {
                return(BadRequest("User already exists with same email"));
            }

            user.Password = Utils.GetHashString(user.Password); // to hash string

            Guid id = Utils.ToGuid(user.Id, false);

            user.Email        = user.Email.ToLower(); // ensure that email does not contains uppercase
            user.CreationDate = DateTime.UtcNow;
            user.LastUpdate   = user.CreationDate;
            if (id == Guid.Empty)
            {
                user.Id = Guid.NewGuid().ToString("B");
                Program.MedialynxData.userDBAPI.Add(user);

                #pragma warning disable 4014
                EmailService.SendEmailAsync(
                    user.Email,
                    "Account created successfully",
                    "Account created successfully.");
                #pragma warning restore 4014
                UserRepresentation userRepresentation = new UserRepresentation(user);
                userRepresentation.CredentialsInfo = this.GetCredentialsInfo(user);

                Program.MedialynxData.historyDBAPI.Add(
                    new HistoryItem(
                        user.Id,
                        user.Id,
                        this.GetType().ToString(),
                        "User created successfully " + JsonSerializer.Serialize(userRepresentation)
                        )
                    );

                return(userRepresentation);
            }
            return(BadRequest("User can't be created. Provided id (" + id + ")"));
        }
コード例 #7
0
        public RestSnapshot(IPrincipal user, HttpRequestMessage req, RestControlFlags flags)
            : this(req, true)
        {
            logger.DebugFormat("RestSnapshot:User");


            populator = () => {
                representation = UserRepresentation.Create(req, user, flags);
                SetHeaders();
            };
        }
コード例 #8
0
        /// <summary>
        /// Create a user from Keycloak
        /// </summary>
        /// <param name="userRepresentation"></param>
        /// <param name="context"></param>
        /// <returns>The response message from Keycloak</returns>
        public static HttpResponseMessage CreateUserRepresentation(UserRepresentation userRepresentation, HttpContext context)
        {
            using (var client = new HttpClient())
            {
                // Choose between using the default admin account or the session user (The session user needs to have the appropriate manage-users role from the master-realm client).
                //var tokenResult = await GetAdminAccessToken();
                var accessToken = GetSessionAccessToken(context);
                var request     = CreateHttpRequestMessage(HttpMethod.Post, Constants.keycloak_api_user_endpoint, accessToken);

                var content = JsonConvert.SerializeObject(userRepresentation);
                request.Content = new StringContent(content, Encoding.UTF8, "application/json");
                var response = client.SendAsync(request);
                return(response.Result);
            }
        }
コード例 #9
0
        /// <summary>
        /// Update a user in Keycloak
        /// </summary>
        /// <param name="user"></param>
        /// <param name="context"></param>
        /// <returns>The response message from Keycloak</returns>
        public static async Task <HttpResponseMessage> UpdateUserRepresentation(UserRepresentation user, HttpContext context)
        {
            using (var client = new HttpClient())
            {
                var accessToken = GetSessionAccessToken(context);
                var request     = CreateHttpRequestMessage(HttpMethod.Put,
                                                           Constants.keycloak_api_user_endpoint + "/" +
                                                           context.Request.GetOwinContext().Authentication.User.GetUserId(), accessToken);

                var content = JsonConvert.SerializeObject(user);
                request.Content = new StringContent(content, Encoding.UTF8, "application/json");
                var response = await client.SendAsync(request);

                return(response);
            }
        }
コード例 #10
0
        private IEnumerator UserRequest(string path, string payload, Action <int> responseHandler)
        {
            UnityWebRequest request = UnityWebRequest.Put(
                Configuration.API_URL + path,
                payload);

            yield return(MakeRequest(request, "POST", response =>
            {
                UserRepresentation result = JsonUtility.FromJson <UserRepresentation>(request.downloadHandler.text);

                if (result.token != null)
                {
                    token = result.token;
                    PlayerPrefs.SetString(TOKEN, token);
                }

                responseHandler((int)result.playerId);
            }));
        }
コード例 #11
0
        public async Task <ActionResult <dynamic> > AuthenticateAsync([FromBody] User model)
        {
            var user = UserRepository.Get(model.Username, model.Password);

            if (user == null)
            {
                return(NotFound(new { message = "Usuário ou Senha Inválidos!" }));
            }

            var token = TokenService.GenerateToken(user);

            var userRepresentation = UserRepresentation.CreateRepresentation(user);

            return(new
            {
                userRepresentation,
                token
            });
        }
コード例 #12
0
 public IHttpActionResult GetUser(string email)
 {
     try
     {
         if (!string.IsNullOrWhiteSpace(email))
         {
             UserRepresentation user = _accountApplicationService.GetUserByEmail(email);
             return(Ok(user));
         }
         else
         {
             return(BadRequest("No email provided to GetUser"));
         }
     }
     catch (Exception exception)
     {
         return(InternalServerError());
     }
 }
コード例 #13
0
        // GET users/1
        public IHttpActionResult Get(int id)
        {
            var user = db.Users.Include("Reviews").ToList().Find(x => x.Id == id);

            if (user == null)
            {
                return(NotFound());
            }

            var reviews = db.Reviews.Include("User")
                          .Where(x => x.User.Id == user.Id)
                          .ToList()
                          .Select(x => new ReviewRepresentation
            {
                Id      = x.Id,
                Content = x.Content
            })
                          .ToList();

            var userRepresentation = new UserRepresentation()
            {
                Id   = user.Id,
                Name = user.Name
            };

            if (reviews.Count > 0)
            {
                userRepresentation.Reviews = new List <ReviewRepresentation>();
                foreach (var review in reviews)
                {
                    userRepresentation.Reviews.Add(review);
                }
            }

            return(Ok(userRepresentation));
        }
コード例 #14
0
        /// <summary>
        /// Update User Profile This will update the profile associated to the current token. [user] role required
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body"> (optional)</param>
        /// <returns>UserRepresentation</returns>
        public UserRepresentation CurrentUser(UserRepresentation body = null)
        {
            ApiResponse <UserRepresentation> localVarResponse = CurrentUserWithHttpInfo(body);

            return(localVarResponse.Data);
        }
コード例 #15
0
 private Bitmap GetUserRepresentationClone()
 {
     return(UserRepresentation.Copy(Bitmap.Config.Argb8888, true));
 }
コード例 #16
0
        /// <summary>
        /// Update User Profile This will update the profile associated to the current token. [user] role required
        /// </summary>
        /// <exception cref="IO.Swagger.Client.ApiException">Thrown when fails to make API call</exception>
        /// <param name="body"> (optional)</param>
        /// <returns>Task of UserRepresentation</returns>
        public async System.Threading.Tasks.Task <UserRepresentation> CurrentUserAsync(UserRepresentation body = null)
        {
            ApiResponse <UserRepresentation> localVarResponse = await CurrentUserAsyncWithHttpInfo(body);

            return(localVarResponse.Data);
        }
コード例 #17
0
        // PUT: api/Users/5
        public IHttpActionResult Put(int id, UserRepresentation newUserRepresentation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newUser = new User()
            {
                Id      = newUserRepresentation.Id,
                Name    = newUserRepresentation.Name,
                Reviews = newUserRepresentation.Reviews?.Select(x => new Review()
                {
                    Id = x.Id
                }).ToList() ?? new List <Review>()
            };


            if (id != newUserRepresentation.Id)
            {
                return(BadRequest());
            }

            try
            {
                var user = db.Users.Include(x => x.Reviews).Single(x => x.Id == id);

                db.Entry(user).CurrentValues.SetValues(newUser);

                foreach (var review in user.Reviews.ToList())
                {
                    // ReSharper disable once SimplifyLinqExpression
                    if (!newUser.Reviews.Any(x => x.Id == review.Id))
                    {
                        user.Reviews.Remove(review);
                    }
                }

                foreach (var review in newUser.Reviews)
                {
                    if (user.Reviews.Any(x => x.Id == review.Id))
                    {
                        continue;
                    }
                    db.Reviews.Attach(review);
                    user.Reviews.Add(review);
                }

                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!UserExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    return(BadRequest());
                }
            }
            catch (Exception)
            {
                return(BadRequest());
            }
            return(StatusCode(HttpStatusCode.NoContent));
        }