is spring-data-redis (opsForHash) get the same as hgetall? - hash

I was doing the interactive tutorial al http://try.redis.io. while reading the spring data redis I have not come across that method but came across a get (without the "all")
/**
* Get value for given {#code hashKey} from hash at {#code key}.
*
* #param key must not be {#literal null}.
* #param hashKey must not be {#literal null}.
* #return
*/
HV get(H key, Object hashKey);
I was wondering if they were the same? also if they are the same there is not a method like hget (that only gets one value)?

I had forgotten I made this question.
Yes it is, when you are querying redis for the data of a key you bring all the respective information

Related

ActiveMQ Artemis ActiveMQSecurityManager4 verify ClientID/Subscription

Currently Artemis the has ActiveMQSecurityManager4. It gives a lot of control when using the following method:
/**
* Determine whether the given user is valid and whether they have
* the correct role for the given destination address.
*
* This method is called instead of
* {#link ActiveMQSecurityManager#validateUserAndRole(String, String, Set, CheckType)}.
*
* #param user the user
* #param password the user's password
* #param roles the user's roles
* #param checkType which permission to validate
* #param address the address for which to perform authorization
* #param remotingConnection the user's connection
* #param securityDomain the name of the JAAS security domain to use (can be null)
* #return the name of the validated user or null if the user isn't validated
*/
String validateUserAndRole(String user,
String password,
Set<Role> roles,
CheckType checkType,
String address,
RemotingConnection remotingConnection,
String securityDomain);
When a client connects and tries to create a subscription is there a way to know what is his ClientID/Subscription Name? (CheckType=CREATE_DURABLE_QUEUE over address="org.activemq.premium.news" )
I want to have control who is allowed to subscribe a given address (TOPIC) and guarantee that a subscription belongs to the initial (authenticated) subscriber.
EDIT 1:
The caller method has the queue (clientID+subs name) but I don't think It can be extended.
/**
* The ActiveMQ Artemis SecurityStore implementation
*/
public class SecurityStoreImpl implements SecurityStore, HierarchicalRepositoryChangeListener {
...
#Override
public void check(final SimpleString address,
final SimpleString queue, //exactly what I was looking for
final CheckType checkType,
final SecurityAuth session) throws Exception {
...
EDIT 2:
Scenario
I have Bob (user:bob, pass: bob) and Alice (user:Alice, pass:Alice) and each one will create their connection to the broker to subscribe let's say address="org.activemq.premium.news". So far I can block one of them from reaching the address, which is not bad. Now I want both to subscribe (each one will have a queue) but I want to make sure the Bob's subscription is named "bob" and Alice's subscription is named "alice". I don't want that if Alice subscribes first it uses "bob" as subscription name. Also not sure if the spec guaranties that after the initial subscription from Bob, if he is not connected Alice cannot use his subscription name to consume his messages - i.e. subscription queue is bound to that user.
I think what you want to do was already addressed via ARTEMIS-592. You just need to concatenate the address and queue name with a . character in your related security-setting in broker.xml. Be sure to put the users which should be isolated in different groups.
To be clear, you don't need to implement a security manager or plugin or anything like that. You should be able to take care of everything you need just with configuration.
My initial requirement is now possible due to https://issues.apache.org/jira/browse/ARTEMIS-2886 changes.

How to add a field which is an array of different models

We defined in TYPO3 9.5 this field in a model:
/**
* #var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\GeorgRinger\News\Domain\Model\News>
* #TYPO3\CMS\Extbase\Annotation\ORM\Lazy
*/
protected $txIctivigoNoticesFrom;
/**
* Get notices from
*
* #return \GeorgRinger\News\Domain\Model\News[]
*/
public function getTxIctivigoNoticesFrom()
{
return $this->txIctivigoNoticesFrom;
}
/**
* Set notices from
*
* #param \GeorgRinger\News\Domain\Model\News[] $txIctivigoNoticesFrom
*/
public function setTxIctivigoNoticesFrom($txIctivigoNoticesFrom)
{
$this->txIctivigoNoticesFrom = $txIctivigoNoticesFrom;
}
But now we want to allow this is an array of not only news records, but pages and sys_file_metadata records as well. How could we achieve that?
We tried to instantiate an abstract entity between <>, but it's not possible.
TCA field is defined properly as a group type, and it saves relations to these three tables.
There is no ready-to-use functionality in extbase to resolve such mixed references into objects. In the database field, the content is a comma separated list of identifiers, which are of the form TABLENAME_UID, like tt_content_1670,tt_content_1672,pages_123. So your only choice would be to receive those values as string(s) and then load the objects yourself.
With this solution, keep in mind, that there are no default extbase models for the core elements like tt_content, page and so on. So you will either have to use something like https://github.com/georgringer/news/blob/master/Classes/Domain/Model/TtContent.php and https://github.com/georgringer/news/blob/master/Classes/Domain/Repository/TtContentRepository.php and/or write the corresponding models and repositories yourself!
I you don't need extbase objects, but just the plain database data for some reason, you can also load this directly from the database.

Workflow symfony 3.2 how search by place

I have set up a workflow state machine and the data is stored in json_array. I based myself on this tutorial.
/**
* This property is used by the marking store
* #ORM\Column(type="json_array", nullable=true)
*/
public $currentPlace;
Now I want to search for all open tickets. How to do? Storing with something other than a json_array?

How to use two collections to authenticate zfcuser?

I use Doctrine and MongoDB ODM modules at my zf2 application. ZfcUser is used for authorization.
Is there a way to use two collections, say users and clients to authenticate via zfcuser+doctrine? I am curious, if there is a way to combine two mongo collections into one to use combined for authentication?
You do not need to merge the users into one collection as you can have multiple 'authentication adapters' (see ZfcUser\Authentication\Adapter\Db for an example)
These are defined within global config file: zfcuser.global.php
Each of my adapters are run in order of priority until one returns a successful authentication result.
For example; I have the following configuration for Users and Candidates entities.
/**
* Authentication Adapters
*
* Specify the adapters that will be used to try and authenticate the user
*
* Default value: array containing 'ZfcUser\Authentication\Adapter\Db' with priority 100
* Accepted values: array containing services that implement 'ZfcUser\Authentication\Adapter\ChainableAdapter'
*/
'auth_adapters' => array(
50 => 'JobboardCandidate\Authentication\Adapter\CandidateDatabaseAdapter',
75 => 'JobboardUser\Authentication\Adapter\UserDatabaseAdapter',
//100 => 'ZfcUser\Authentication\Adapter\Db', [this is the default]
),
As I understand from your question you want to get one collection with two different document types so that you can use this collection for authentication.
If you use doctrine Inheritance mapping you can have two different classes and resolve them in one collection.
In this case your Client class would extend your User class. If you would use the findAll method in your UserRepository you would get both the clients and the users in one Collection
This will help you achieve what you want:
<?php
namespace MyProject\Model;
/**
* #Document
* #InheritanceType("SINGLE_COLLECTION")
* #DiscriminatorField(name="discriminator", type="string")
* #DiscriminatorMap({"user" = "User", "client" = "Client"})
*/
class User
{
// ...
}
/**
* #Document
*/
class Client extends User
{
// ...
}
And then
$userRepository->findAll();
Read more on inheritance mapping here in the Doctrine documentation

same password for multi-users in zend

I have the following scenario in zend framework:
Data
Table of students
Table of classes, which contain many students each.
Table of assignments, each of which is assigned to a class and given a password
I want students to be able to access an assignment given that assignment's id and shared password, but for the application to note which student signed in to the assignment. Zend_Auth however expects one table to contain both the username and the password, but in my situation the username is in the students table, and the password is in the assignments table.
Can anyone suggest a good way of handling the student login where they can all share one password. A way to authenticate with just a username and no password would work, as then I could do the password check in a separate conditional.
I think your best bet would really be to just write your own adapter. Something like this would most likely work:
class MyAuthAdapter implements Zend_Auth_Adapter_Interface
{
protected $_username;
protected $_password;
protected $_assignment_id;
/**
* Sets username, password, and assignemnt ID for authentication
*
* #return void
*/
public function __construct($username,$password,$assignment_id)
{
$this->_username = $username;
$this->_password = $password;
$this->_assignment_id = $assignment_id;
}
/**
* Performs an authentication attempt
*
* #throws Zend_Auth_Adapter_Exception If authentication cannot
* be performed
* #return Zend_Auth_Result
*/
public function authenticate()
{
// logic here to check everything out and erturn a new Zend_Auth_Result
}
}
Shared passwords are a really bad idea. If you share the password, then another student need only learn an id -- typically not a highly secured piece of information -- to access the resource as the other student. A better solution would be to use a role to control access to assignments and put the students who need access to the assignment in the role. This way each student can still have access to the assignment and retain their own id/password pair. See the Zend documentation for information on roles and how to use them.