I actually think that this should be a seperate service method. The checking for user and the condition on user for the event make me think that the code would be simpler to read and less error prone that way.

ie:
close(motion)
close_by_user(motion, user)