Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
pluginaweek-has_messages
Advanced tools
= has_messages
+has_messages+ demonstrates a reference implementation for sending messages between users.
== Resources
API
Bugs
Development
Source
== Description
Messaging between users is fairly common in web applications, especially those that support social networking. Messaging doesn't necessarily need to be between users, but can also act as a way for the web application to send notices and other notifications to users.
Designing and building a framework that supports this can be complex and takes away from the business focus. This plugin can help ease that process by demonstrating a reference implementation of these features.
== Usage
=== Adding message support
class User < ActiveRecord::Base has_messages end
This will build the following associations:
If you have more specific needs, you can create the same associations manually that +has_messages+ builds. See HasMessages::MacroMethods#has_messages for more information about the asssociations that are generated from this macro.
=== Creating new messages
message = user.messages.build message.to user1, user2 message.subject = 'Hey!' message.body = 'Does anyone want to go out tonight?' message.deliver
=== Replying to messages
reply = message.reply_to_all reply.body = "I'd love to go out!" reply.deliver
=== Forwarding messages
forward = message.forward forward.body = 'Interested?' forward.deliver
=== Processing messages asynchronously
In addition to delivering messages immediately, you can also queue messages so that an external application processes and delivers them. This is especially useful for messages that need to be sent outside of the confines of the application.
To queue messages for external processing, you can use the +queue+ event, rather than +deliver+. This will indicate to any external processes that the message is ready to be sent.
To process queued emails, you need an external cron job that checks and sends them like so:
Message.with_state('queued').each do |message| message.deliver end
== Testing
Before you can run any tests, the following gem must be installed:
To run against a specific version of Rails:
rake test RAILS_FRAMEWORK_ROOT=/path/to/rails
== Dependencies
FAQs
Unknown package
We found that pluginaweek-has_messages demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.