mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Revert "Use a bitmask to represent role attributes"
This reverts commit 1826987a46
.
The overall design was deemed unacceptable, in discussion following the
previous commit message; we might find some parts of it still
salvageable, but I don't want to be on the hook for fixing it, so let's
wait until we have a new patch.
This commit is contained in:
@ -40,7 +40,6 @@
|
||||
#include "storage/pg_shmem.h"
|
||||
#include "storage/proc.h"
|
||||
#include "storage/procarray.h"
|
||||
#include "utils/acl.h"
|
||||
#include "utils/builtins.h"
|
||||
#include "utils/guc.h"
|
||||
#include "utils/memutils.h"
|
||||
@ -329,6 +328,24 @@ SetUserIdAndContext(Oid userid, bool sec_def_context)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Check whether specified role has explicit REPLICATION privilege
|
||||
*/
|
||||
bool
|
||||
has_rolreplication(Oid roleid)
|
||||
{
|
||||
bool result = false;
|
||||
HeapTuple utup;
|
||||
|
||||
utup = SearchSysCache1(AUTHOID, ObjectIdGetDatum(roleid));
|
||||
if (HeapTupleIsValid(utup))
|
||||
{
|
||||
result = ((Form_pg_authid) GETSTRUCT(utup))->rolreplication;
|
||||
ReleaseSysCache(utup);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize user identity during normal backend startup
|
||||
*/
|
||||
@ -358,7 +375,7 @@ InitializeSessionUserId(const char *rolename)
|
||||
roleid = HeapTupleGetOid(roleTup);
|
||||
|
||||
AuthenticatedUserId = roleid;
|
||||
AuthenticatedUserIsSuperuser = (rform->rolattr & ROLE_ATTR_SUPERUSER);
|
||||
AuthenticatedUserIsSuperuser = rform->rolsuper;
|
||||
|
||||
/* This sets OuterUserId/CurrentUserId too */
|
||||
SetSessionUserId(roleid, AuthenticatedUserIsSuperuser);
|
||||
@ -377,7 +394,7 @@ InitializeSessionUserId(const char *rolename)
|
||||
/*
|
||||
* Is role allowed to login at all?
|
||||
*/
|
||||
if (!(rform->rolattr & ROLE_ATTR_CANLOGIN))
|
||||
if (!rform->rolcanlogin)
|
||||
ereport(FATAL,
|
||||
(errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
|
||||
errmsg("role \"%s\" is not permitted to log in",
|
||||
|
Reference in New Issue
Block a user