public IActionResult Create([FromBody] JObject appUser)
        {
            using (var context = new RevojiDataContext())
            {
                try
                {
                    DBAppUser dbAppUser = new DBAppUser(appUser);

                    if (context.AppUsers.Any(user => user.Handle == dbAppUser.Handle))
                    {
                        return(BadRequest("duplicate_user_handle"));
                    }

                    if (context.AppUsers.Any(user => user.Email == dbAppUser.Email))
                    {
                        return(BadRequest("duplicate_user_email"));
                    }

                    if (string.IsNullOrEmpty(dbAppUser.Password))// TODO: handle things like #chars, capital/lower case, symbols?
                    {
                        return(BadRequest("password_not_set"));
                    }

                    context.Add(dbAppUser);
                    context.Save();

                    return(Ok(new AppUserDetail(dbAppUser)));
                }
                catch (DbUpdateException e)
                {
                    return(BadRequest("invalid_error")); //TODO: should be an object
                }
            }
        }
        public IActionResult uploadProfilePicture([FromForm] IFormFile file)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(ApiUser.ID);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                var result = AWSFileUploader.UploadObject(file, "profile_pictures").Result;

                if (!result.Success)
                {
                    return(new BadRequestResult());
                }

                var content = JsonConvert.DeserializeObject <AppUserContent>(dbAppUser.Content);
                content.Avatar = result.Url;

                dbAppUser.Content = JsonConvert.SerializeObject(content);
                context.Save();

                return(Ok(result));
            }
        }
Exemple #3
0
 public AppUser(DBAppUser dBAppUser) : base(dBAppUser)
 {
     FirstName          = dBAppUser.FirstName;
     LastName           = dBAppUser.LastName;
     City               = dBAppUser.City;
     AdministrativeArea = dBAppUser.AdministrativeArea;
     Country            = dBAppUser.Country;
 }
Exemple #4
0
 public AppUserDetail(DBAppUser dbAppUser) : base(dbAppUser)
 {
     DateOfBirth = dbAppUser.DateOfBirth;
     Gender      = dbAppUser.Gender;
     Religion    = dbAppUser.Religion;
     Politics    = dbAppUser.Politics;
     Education   = dbAppUser.Education;
     Profession  = dbAppUser.Profession;
     Interests   = dbAppUser.Interests;
     Joined      = dbAppUser.Joined;
 }
Exemple #5
0
        public override void UpdateDB(DBTable dbModel)
        {
            base.UpdateDB(dbModel);

            DBAppUser dBAppUser = dbModel as DBAppUser;

            dBAppUser.FirstName          = FirstName;
            dBAppUser.LastName           = LastName;
            dBAppUser.City               = City;
            dBAppUser.AdministrativeArea = AdministrativeArea;
            dBAppUser.Country            = Country;
        }
 public IActionResult Get(string handle)
 {
     using (var context = new RevojiDataContext())
     {
         DBAppUser dbAppUser = context.AppUsers.FirstOrDefault(user => user.Handle == handle);
         if (dbAppUser == null)
         {
             return(new NotFoundResult());
         }
         return(Ok(new AppUserDetail(dbAppUser)));
     }
 }
 public IActionResult Get(int id)
 {
     using (var context = new RevojiDataContext())
     {
         DBAppUser dbAppUser = context.Get <DBAppUser>(id);
         if (dbAppUser == null)
         {
             return(new NotFoundResult());
         }
         return(Ok(new AppUserDetail(dbAppUser)));
     }
 }
Exemple #8
0
        public IActionResult GetPreferences(int id)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(id);
                if (dbAppUser == null || string.IsNullOrEmpty(dbAppUser.Preferences) || dbAppUser.Content == "{}")
                {
                    return(Ok());
                }

                return(Ok(JsonConvert.DeserializeObject <AppUserPreferences>(dbAppUser.Preferences)));
            }
        }
        public IActionResult GetCounts(int id)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(id);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                AppUserStats stats = new AppUserStats(id);

                return(Ok(stats));
            }
        }
Exemple #10
0
        public override void UpdateDB(DBTable dbModel)
        {
            base.UpdateDB(dbModel);

            DBAppUser dBAppUser = dbModel as DBAppUser;

            dBAppUser.DateOfBirth = DateOfBirth;
            dBAppUser.Gender      = Gender;
            dBAppUser.Religion    = Religion;
            dBAppUser.Politics    = Politics;
            dBAppUser.Education   = Education;
            dBAppUser.Profession  = Profession;
            dBAppUser.Interests   = Interests;
            dBAppUser.Joined      = Joined;
        }
Exemple #11
0
        public IActionResult SetSettings(int id, [FromBody] JObject appUserSettings)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(id);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                dbAppUser.Settings = JsonConvert.SerializeObject(appUserSettings);
                context.Save();

                return(Ok());
            }
        }
        public IActionResult Update(int id, [FromBody] JObject appUser)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(id);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                dbAppUser.update(appUser);
                context.Save();

                return(Ok(new AppUserDetail(dbAppUser)));
            }
        }
        public IActionResult Delete()
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(ApiUser.ID);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                context.Remove(dbAppUser);
                context.Save();

                return(Ok());
            }
        }
        public IActionResult ChangeEmail(string email)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(ApiUser.ID);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                //if (email is valid)
                //{
                //    return new BadRequestResult();
                //}

                dbAppUser.Email = email;
                context.Save();

                return(Ok());
            }
        }
        public IActionResult ChangePassword(string newPassword, string oldPassword)
        {
            using (var context = new RevojiDataContext())
            {
                DBAppUser dbAppUser = context.Get <DBAppUser>(ApiUser.ID);
                if (dbAppUser == null)
                {
                    return(new NotFoundResult());
                }

                if (!dbAppUser.isPasswordCorrect(oldPassword))
                {
                    return(new UnprocessableEntityResult());
                }

                dbAppUser.SetPassword(newPassword);
                context.Save();

                return(Ok());
            }
        }
        Task IResourceOwnerPasswordValidator.ValidateAsync(ResourceOwnerPasswordValidationContext context)
        {
            using (var dbctx = new RevojiDataContext())
            {
                if (context.UserName == null || context.Password == null)
                {
                    context.Result = new GrantValidationResult(TokenRequestErrors.InvalidRequest, "missing_arguments_error");
                    return(Task.FromResult <object>(null));
                }

                DBAppUser dbAppUser = dbctx.AppUsers.FirstOrDefault(au => au.Handle == context.UserName);
                if (dbAppUser == null || !dbAppUser.isPasswordCorrect(context.Password))
                {
                    context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant, "invalid_handle_password_error");
                    return(Task.FromResult <object>(null));
                }

                var claim  = new Claim(ClaimTypes.Name, dbAppUser.Handle);
                var claims = new List <Claim>();
                claims.Add(claim);
                context.Result = new GrantValidationResult(dbAppUser.Handle, "access_token", claims);
                return(Task.FromResult <object>(null));
            }
        }