public User CreateUser(CreateUser request) { var httpRequest = RequestContext.Get<IHttpRequest>(); var authRepo = httpRequest.TryResolve<IUserAuthRepository>(); if(authRepo==null) throw HttpError.NotFound("AuthRepository NO found"); var user= new UserAuth { FirstName= request.FirstName, LastName= request.LastName, Email= request.Email, UserName= request.UserName, DisplayName = request.FirstName +" "+ request.LastName }; user.Set<UserMeta>( new UserMeta{ Info= request.Info, IsActive=request.IsActive, ExpiresAt= request.ExpiresAt }); user = authRepo.CreateUserAuth(user, request.Password); User u = new User(); u.PopulateWith(user); return u; }
public User Update(UpdateUser request) { var httpRequest = RequestContext.Get<IHttpRequest>(); var userSession = httpRequest.GetSession(); if(!( userSession.HasRole(RoleNames.Admin) || userSession.HasPermission("User.update") )) throw HttpError.Unauthorized("Update no allowed"); var authRepo = httpRequest.TryResolve<IUserAuthRepository>(); if(authRepo==null) throw HttpError.NotFound("AuthRepository NO found"); var user= authRepo.GetUserAuth(request.Id.ToString()); if (!(request.Id== int.Parse(userSession.UserAuthId) || userSession.HasRole(RoleNames.Admin)) ) throw HttpError.Unauthorized("Update no allowed (no admin)"); if(user == default(UserAuth)) throw HttpError.NotFound( string.Format("User Id:'{0}' NO found",request.Id)); var newUser= new UserAuth { Id= request.Id, FirstName= request.FirstName, LastName= request.LastName, Email= request.Email, UserName= request.UserName, DisplayName= request.FirstName+" "+request.LastName, ModifiedDate= DateTime.Now, }; newUser.Set<UserMeta>( new UserMeta{ Info= request.Info, IsActive=request.IsActive, ExpiresAt= request.ExpiresAt }); if(request.Password.IsNullOrEmpty()) { AuthRepoProxy.Execute(db=>{ db.UpdateOnly( newUser, ev=>ev.Where(q=>q.Id==request.Id). Update(f=> new { f.UserName, f.FirstName, f.LastName, f.Email, f.Meta, f.DisplayName, f.ModifiedDate })); }); } else { user = authRepo.UpdateUserAuth(user, newUser,request.Password); } User u = new User(); u.PopulateWith(newUser); return u; }