예제 #1
0
		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;
		}
예제 #2
0
		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;						
				
		}