#[repr(C)]pub struct SFAuthorizationPluginView { /* private fields */ }
SFAuthorizationPluginView
only.Expand description
SFAuthorizationPluginView is a class that you can use to insert an NSView into AuthorizationPlugin interfaces.
SFAuthorizationPluginView provides AuthorizationPlugin writers with an easy way to provide a user interface for their AuthorizationPlugin without having to duplicate the standard authentication dialog or the login window dialog. This class was designed to be subclassed by the AuthorizationPlugin writer. The following methods were designed to be overridden: buttonPressed:, didActivate, willActivateWithUser:, didDeactivate, firstKeyView, firstResponder, lastKeyView, setEnabled:, and viewForType:. In order to display the user interface, the AuthorizationPlugin should create an instance of your subclass and then call displayView. That will cause the appropriate dialog to be displayed and when credentials are needed, the overridden methods will be called in order to display the NSView provided by the subclass.
See also Apple’s documentation
Implementations§
Source§impl SFAuthorizationPluginView
impl SFAuthorizationPluginView
Sourcepub unsafe fn initWithCallbacks_andEngineRef(
this: Allocated<Self>,
callbacks: *const AuthorizationCallbacks,
engine_ref: AuthorizationEngineRef,
) -> Option<Retained<Self>>
Available on crate feature objc2-security
only.
pub unsafe fn initWithCallbacks_andEngineRef( this: Allocated<Self>, callbacks: *const AuthorizationCallbacks, engine_ref: AuthorizationEngineRef, ) -> Option<Retained<Self>>
objc2-security
only.The initialization method of this class. You must provide the callbacks and engineRef that were provided to the AuthorizationPlugin and AuthorizationMechanismRef.
Parameter callbacks
: The AuthorizationCallbacks provided to the AuthorizationPlugin.
Parameter engineRef
: The AuthorizationEngineRef provided to the AuthorizationMechanismRef.
Sourcepub unsafe fn engineRef(&self) -> AuthorizationEngineRef
Available on crate feature objc2-security
only.
pub unsafe fn engineRef(&self) -> AuthorizationEngineRef
objc2-security
only.An accessor method to the AuthorizationEngineRef provided to the init method. Use this value when calling the functions of the AuthorizationCallbacks when you need to set the result or set a context value.
Sourcepub unsafe fn callbacks(&self) -> *const AuthorizationCallbacks
Available on crate feature objc2-security
only.
pub unsafe fn callbacks(&self) -> *const AuthorizationCallbacks
objc2-security
only.An accessor method to the AuthorizationEngineRef provided to the init method. Use this to get the function pointers to SetResult, SetContextValue, etc. See the AuthorizationCallbacks documentation for more details.
When a user presses a button, this method will be called to inform the SFAuthorizationPluginView of the user’s action. By default buttonPressed: will set a result of Deny when the OK or Login buttons are pressed.
If a user has pressed Login or OK button was pressed, the subclass needs to set the context values for the short name of the user so that user attributes can be looked up. Use kAuthorizationEnvironmentUsername as the key. The subclass should also set any additional context values that are needed by the authentication plugin to verify the user’s credentials.
Parameter inButtonType
: the type of button that was pressed.
Sourcepub unsafe fn lastError(&self) -> Option<Retained<NSError>>
pub unsafe fn lastError(&self) -> Option<Retained<NSError>>
Called by the Apple provided SecurityAgent plugin to get a description of the error that occurred during evaluation. If no error occurred, the method should return nil.
A downstream mechanism that works in cooperation with the SFAuthorizationPluginView can set a context value using the kAuthorizationContextFlagSticky flag to make it available to the SFAuthorizationPluginView in case of an error.
Sourcepub unsafe fn didActivate(&self)
pub unsafe fn didActivate(&self)
Called when the user interface was made active by the AuthorizationPlugin.
Sourcepub unsafe fn willActivateWithUser(
&self,
in_user_information: Option<&NSDictionary>,
)
pub unsafe fn willActivateWithUser( &self, in_user_information: Option<&NSDictionary>, )
Called by the Apple provided SecurityAgent plugin before the UI is made active.
Parameter inUserInformation
: is a dictionary contains the following information:
kSFAuthorizationPluginViewUserNameKey - an NSString with the selected user’s name
kSFAuthorizationPluginViewUserShortNameKey - an NSString with the selected user’s short name
The user name can be used to pre-populate a Text Field. NOTE: inUserInformation may be nil.
Sourcepub unsafe fn didDeactivate(&self)
pub unsafe fn didDeactivate(&self)
Called when the user interface is deactivated by the AuthorizationPlugin.
Sourcepub unsafe fn firstKeyView(
&self,
mtm: MainThreadMarker,
) -> Option<Retained<NSView>>
pub unsafe fn firstKeyView( &self, mtm: MainThreadMarker, ) -> Option<Retained<NSView>>
When called by the AuthorizationPlugin, the subclass should return the first view in the keyboard loop of the NSView. The default value returned is nil.
Sourcepub unsafe fn firstResponder(
&self,
mtm: MainThreadMarker,
) -> Option<Retained<NSResponder>>
pub unsafe fn firstResponder( &self, mtm: MainThreadMarker, ) -> Option<Retained<NSResponder>>
When called by the AuthorizationPlugin, the subclass should return the view that should get the focus for keyboard events. The default value returned is nil.
Sourcepub unsafe fn lastKeyView(
&self,
mtm: MainThreadMarker,
) -> Option<Retained<NSView>>
pub unsafe fn lastKeyView( &self, mtm: MainThreadMarker, ) -> Option<Retained<NSView>>
When called by the AuthorizationPlugin, the subclass should return the last view in the keyboard loop for the view. The default value returned is nil.
Sourcepub unsafe fn setEnabled(&self, in_enabled: bool)
pub unsafe fn setEnabled(&self, in_enabled: bool)
When called by the AuthorizationPlugin, the subclass should call setEnabled: on the controls that are in its view.
Parameter inEnabled
: the state the controls should be in.
Sourcepub unsafe fn viewForType(
&self,
in_type: SFViewType,
mtm: MainThreadMarker,
) -> Option<Retained<NSView>>
pub unsafe fn viewForType( &self, in_type: SFViewType, mtm: MainThreadMarker, ) -> Option<Retained<NSView>>
When called by the AuthorizationPlugin, the subclass should return the appropriate NSView for the requested SFViewType. The NSView and its contents should have the autoresize flags set as appropriate to allow for the view to be resized.
Parameter inType
: is the type of view being requested by the AuthorizationPlugin.
NOTE: Currently a maximum width of 394 points is supported, but Apple reserves the right to change that in the future. Do not assume that the width of the NSView won’t change.
Source§impl SFAuthorizationPluginView
Methods declared on superclass NSObject
.
impl SFAuthorizationPluginView
Methods declared on superclass NSObject
.
Source§impl SFAuthorizationPluginView
SFHostControl.
Methods called by the AuthorizationPlugin that instantiated the subclass or by the subclass.
impl SFAuthorizationPluginView
SFHostControl. Methods called by the AuthorizationPlugin that instantiated the subclass or by the subclass.
Sourcepub unsafe fn displayView(&self)
pub unsafe fn displayView(&self)
displayView is called in order to display the user interface provided by the subclass. If you subclass this method, be sure to call [super displayView]. displayView will raise an SFDisplayViewException exception if an error occurs displaying the authorization dialog.
Sourcepub unsafe fn setButton_enabled(
&self,
in_button_type: SFButtonType,
in_enabled: bool,
)
pub unsafe fn setButton_enabled( &self, in_button_type: SFButtonType, in_enabled: bool, )
The SFAuthorizationPluginView calls this when it would like to disable a button in the UI.
Parameter inButtonType
: the type of the button
Parameter inEnabled
: YES to enabled the button, NO to disable the button
Sourcepub unsafe fn updateView(&self)
pub unsafe fn updateView(&self)
updateView is called in order to have a new or modified NSView loaded by the AuthorizationPlugin.
Methods from Deref<Target = NSObject>§
Sourcepub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
pub fn doesNotRecognizeSelector(&self, sel: Sel) -> !
Handle messages the object doesn’t recognize.
See Apple’s documentation for details.
Methods from Deref<Target = AnyObject>§
Sourcepub fn class(&self) -> &'static AnyClass
pub fn class(&self) -> &'static AnyClass
Dynamically find the class of this object.
§Panics
May panic if the object is invalid (which may be the case for objects
returned from unavailable init
/new
methods).
§Example
Check that an instance of NSObject
has the precise class NSObject
.
use objc2::ClassType;
use objc2::runtime::NSObject;
let obj = NSObject::new();
assert_eq!(obj.class(), NSObject::class());
Sourcepub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
👎Deprecated: this is difficult to use correctly, use Ivar::load
instead.
pub unsafe fn get_ivar<T>(&self, name: &str) -> &Twhere
T: Encode,
Ivar::load
instead.Use Ivar::load
instead.
§Safety
The object must have an instance variable with the given name, and it
must be of type T
.
See Ivar::load_ptr
for details surrounding this.
Sourcepub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: DowncastTarget,
Attempt to downcast the object to a class of type T
.
This is the reference-variant. Use Retained::downcast
if you want
to convert a retained object to another type.
§Mutable classes
Some classes have immutable and mutable variants, such as NSString
and NSMutableString
.
When some Objective-C API signature says it gives you an immutable class, it generally expects you to not mutate that, even though it may technically be mutable “under the hood”.
So using this method to convert a NSString
to a NSMutableString
,
while not unsound, is generally frowned upon unless you created the
string yourself, or the API explicitly documents the string to be
mutable.
See Apple’s documentation on mutability and on
isKindOfClass:
for more details.
§Generic classes
Objective-C generics are called “lightweight generics”, and that’s because they aren’t exposed in the runtime. This makes it impossible to safely downcast to generic collections, so this is disallowed by this method.
You can, however, safely downcast to generic collections where all the
type-parameters are AnyObject
.
§Panics
This works internally by calling isKindOfClass:
. That means that the
object must have the instance method of that name, and an exception
will be thrown (if CoreFoundation is linked) or the process will abort
if that is not the case. In the vast majority of cases, you don’t need
to worry about this, since both root objects NSObject
and
NSProxy
implement this method.
§Examples
Cast an NSString
back and forth from NSObject
.
use objc2::rc::Retained;
use objc2_foundation::{NSObject, NSString};
let obj: Retained<NSObject> = NSString::new().into_super();
let string = obj.downcast_ref::<NSString>().unwrap();
// Or with `downcast`, if we do not need the object afterwards
let string = obj.downcast::<NSString>().unwrap();
Try (and fail) to cast an NSObject
to an NSString
.
use objc2_foundation::{NSObject, NSString};
let obj = NSObject::new();
assert!(obj.downcast_ref::<NSString>().is_none());
Try to cast to an array of strings.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
// This is invalid and doesn't type check.
let arr = arr.downcast_ref::<NSArray<NSString>>();
This fails to compile, since it would require enumerating over the array to ensure that each element is of the desired type, which is a performance pitfall.
Downcast when processing each element instead.
use objc2_foundation::{NSArray, NSObject, NSString};
let arr = NSArray::from_retained_slice(&[NSObject::new()]);
for elem in arr {
if let Some(data) = elem.downcast_ref::<NSString>() {
// handle `data`
}
}
Trait Implementations§
Source§impl AsRef<AnyObject> for SFAuthorizationPluginView
impl AsRef<AnyObject> for SFAuthorizationPluginView
Source§impl AsRef<NSObject> for SFAuthorizationPluginView
impl AsRef<NSObject> for SFAuthorizationPluginView
Source§impl Borrow<AnyObject> for SFAuthorizationPluginView
impl Borrow<AnyObject> for SFAuthorizationPluginView
Source§impl Borrow<NSObject> for SFAuthorizationPluginView
impl Borrow<NSObject> for SFAuthorizationPluginView
Source§impl ClassType for SFAuthorizationPluginView
impl ClassType for SFAuthorizationPluginView
Source§const NAME: &'static str = "SFAuthorizationPluginView"
const NAME: &'static str = "SFAuthorizationPluginView"
Source§type ThreadKind = <<SFAuthorizationPluginView as ClassType>::Super as ClassType>::ThreadKind
type ThreadKind = <<SFAuthorizationPluginView as ClassType>::Super as ClassType>::ThreadKind
Source§impl Debug for SFAuthorizationPluginView
impl Debug for SFAuthorizationPluginView
Source§impl Deref for SFAuthorizationPluginView
impl Deref for SFAuthorizationPluginView
Source§impl Hash for SFAuthorizationPluginView
impl Hash for SFAuthorizationPluginView
Source§impl Message for SFAuthorizationPluginView
impl Message for SFAuthorizationPluginView
Source§impl NSObjectProtocol for SFAuthorizationPluginView
impl NSObjectProtocol for SFAuthorizationPluginView
Source§fn isEqual(&self, other: Option<&AnyObject>) -> bool
fn isEqual(&self, other: Option<&AnyObject>) -> bool
Source§fn hash(&self) -> usize
fn hash(&self) -> usize
Source§fn isKindOfClass(&self, cls: &AnyClass) -> bool
fn isKindOfClass(&self, cls: &AnyClass) -> bool
Source§fn is_kind_of<T>(&self) -> bool
fn is_kind_of<T>(&self) -> bool
isKindOfClass
directly, or cast your objects with AnyObject::downcast_ref